题目
给你一个整数columnNumber,返回它在 Excel 表中相对应的列名称。
例如:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
1 <= columnNumber <= 2^31 - 1
示例
输入:columnNumber = 1
输出:"A"
输入:columnNumber = 28
输出:"AB"
输入:columnNumber = 701
输出:"ZY"
输入:columnNumber = 2147483647
输出:"FXSHRXW"
解决方案
这道题的思想是1-26的26进制转换,看着简单,坑还是挺多的。
class Solution {
public String convertToTitle(int columnNumber) {
StringBuilder stringBuilder = new StringBuilder();
// 进制转换 1.倒着取余数 2.除以进制数26
while(columnNumber > 0) {
// 这里的columnNumber范围为1-26,普通的26进制应该是0-25
// 所以先减一,取余后再加一
int column = (columnNumber-1) % 26 + 1;
stringBuilder.append((char)(column + 'A' - 1));
columnNumber = (columnNumber-column) / 26;
}
return stringBuilder.reverse().toString();
}
}