我的思路:除数为26,每次将商作为新的被除数,从头插入得到的余数对应的字母
但当可以被26整除时,插入'Z'的同时还需要将被除数-1
代码如下:
public String convertToTitle(int columnNumber) { StringBuffer sb = new StringBuffer(); while (columnNumber != 0){ int remainder = columnNumber % 26; if (remainder != 0){ sb.insert(0, (char) ('A'+remainder-1)); columnNumber = columnNumber / 26; }else { sb.insert(0,('Z')); columnNumber = columnNumber / 26 - 1; } } return sb.toString(); }
结果:
官方给出了更简洁的写法:
class Solution {
public String convertToTitle(int columnNumber) {
StringBuffer sb = new StringBuffer();
while (columnNumber > 0) {
int a0 = (columnNumber - 1) % 26 + 1;
sb.append((char)(a0 - 1 + 'A'));
columnNumber = (columnNumber - a0) / 26;
}
return sb.reverse().toString();
}
}