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;
    }
};
posted @ 2022-07-23 11:00  ggaoda  阅读(1)  评论(0编辑  收藏  举报  来源