将整数按进制分解,可以是二进制、十进制、16进制等,本题是按照二十六进制分解。一般的方法就是取余数和取商结合。
public String convertToTitle(int n) {
if(n <= 0)
return "";
int basic = 26;
List<Character> list = new ArrayList<>();
while (n > 0) {
int remain = n % basic;
if(remain == 0) {
list.add((char)('A' + basic - 1));
n -= basic;
} else {
list.add((char)('A' + remain - 1));
}
n = n / basic;
}
Collections.reverse(list);
String result = "";
for(Character character : list) {
result += character;
}
return result;
}
这里basic就代表进制,特别注意remain为0的情况,需要特殊处理。