难度:简单
题目描述:给你一个整数columnNumber,返回它在 Excel 表中相对应的列名称。
例如:
A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28...
分析
本题本质上为26进制的转换:因为本题从A开始代表数字1,但Z为止代表数字26,这是一个位置上的元素表示。每当当前位置的元素超过26,也即Z的表示数字时,都会向前进一位,变成AA来表示下一个数字,所以说本题的实质为26进制的转换。
解题
本题的代码为:
class Solution {
public String convertToTitle(int columnNumber) {
StringBuilder sb = new StringBuilder();
while (columnNumber > 0){
columnNumber--;
sb.append((char) (columnNumber % 26 + 'A'));
columnNumber = columnNumber / 26;
}
return sb.reverse().toString();
}
}
做进制运算需要注意两点:
第一:每一次计算columnNumber % 26的余数为最后进制转换的最终值,但是得出的数是从个位开始向高位计算的,所以最终需要将string 字符串进行转置。
第二:本题A的起始值为1,所以进入循环后需要进行columnNumber--操作。
