leetcode-168.Excel表列名称
数学问题
题目详情
给你一个整数 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开始没有0
因为从1开始,所以我们可以对每个数减一操作,从而使126变成025
从而完全符合了26进制转换规则
我的代码:
class Solution
{
public:
string convertToTitle(int columnNumber)
{
string res;
while (columnNumber > 0)
{
--columnNumber; //整体减一
res += columnNumber % 26 + 'A'; //每次判断对应哪个字母然后接在后面(反的)
columnNumber /= 26;
}
reverse(res.begin(), res.end()); //反转得到正确结果
return res;
}
};