题目描述:

给你一个整数 ​​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"

提示:

  • 1 <= columnNumber <=

题目分析:

这道题实质上是一道进制转换题,类似于 ​​LeetCode 504.七进制数(简单)​​​ ,但与其不同的点是这道题是从 ​​1​​​ 开始的,并不是从 ​​0​​​ 开始的。因此在执行进制转换操作之前,需要先对 ​​columnNumber​​ 执行减一操作,从而实现整体偏移。

一般性的进制转换题目解题思路,只需要不断地对 ​​columnNumber​​​ 进行 ​​%​​​ 运算取得最后一位,然后对 ​​columnNumber​​​ 进行 ​​/​​​ 运算,将已经取得的位数去掉,直到 ​​columnNumber​​​ 为 ​​0​​ 即可。

题解:

执行用时: 0 ms

内存消耗: 35.5 MB

class Solution {
public String convertToTitle(int columnNumber) {
// 结果字符串
StringBuffer result = new StringBuffer();
// 循环
while (columnNumber != 0) {
// 减一实现整体偏移
--columnNumber;
// 与 26 取模加上 'A' 得相应字符放入缓冲区
result.append((char)(columnNumber % 26 + 'A'));
// 除于 26 取整
columnNumber /= 26;
}
// 反转字符缓冲区返回字符串
return result.reverse().toString();
}
}

题目来源:力扣(LeetCode)