题目描述
给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。
例如:
A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...
示例 1:
输入:columnNumber = 1 输出:"A"
示例 2:
输入:columnNumber = 28 输出:"AB"
示例 3:
输入:columnNumber = 701 输出:"ZY"
示例 4:
输入:columnNumber = 2147483647 输出:"FXSHRXW"
思路
这道题其实类似26进制转换,但不同的是这里的每一位的取值是1~26而非0~25。即A~Z代表了数字1~26。
此处就是对应最低位字母,且,故可以通过模26求得最低位。再通过除26求得除了最低为后的新。
实现
class Solution {
public String convertToTitle(int columnNumber) {
StringBuffer s = new StringBuffer();
while(columnNumber > 0){
columnNumber--;
int a0 = columnNumber % 26;
s.append((char)('A' + a0));
columnNumber /= 26;
}
String res = s.reverse().toString();
return res;
}
}