思路:进制转换。
进制之间相互转换,A进制转为B进制,一般的做法就是取余:数字不断对B取余。
一般进制都是从0开始,而题目是从1开始,所以我们每次取余前先给这个数减一,避免如下这种情况:
数字是26的倍数,如果不减1,那么取余之后为0,所以不能取余,因此我们得额外判断是不是26的倍数;相反,如果减去1,那么余数的范围就是0~25,这样不用额外判断。
代码:
class Solution {
public String convertToTitle(int columnNumber) {
StringBuilder res = new StringBuilder();
while (columnNumber > 0) {
columnNumber --;
res.insert(0, (char) (columnNumber % 26 + 'A'));
columnNumber /= 26;
}
return res.toString();
}
}