算法:十进制转二十七进制

面试遇到的一道题目,十进制转二十七进制,0 用数字 9 表示,剩下用 A - Z 表示 。

我的解决方法(C#):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private static String[] NUM = {"9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
public static string Convert(uint value)
{
if (value==0)
{
return "";
}
return Convert(value/27)+NUM[value%27];
}
public static string Convert27(uint value)
{
if (value==0)
{
return NUM[0];
}
return Convert(value);
}

朋友的解决方法(java):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private String conversion(int num) {
String res = "";
if (num >= 27) {
res += Integer.toString(num/27);
int rem = num % 27;
if (rem == 0) { return res; }
if (rem < 10) {
res += Integer.toString(rem);
} else {
res += (char)(rem-10+65);
}
} else {
if (num < 10) {
res += Integer.toString(num);
} else {
res += (char)(num-10+97);
}
}
return res;
}