Excel表列名称[LeetCode-168]

156 阅读1分钟

题目描述

1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
...

思路分析

根据所描述的现象,是将一个数字转换成26进制表示,但是因为26本身也只占一位(最低位是从1开始,而不是从0开始),因此 在转换之前,要先对原数减1。比如26转换前先减1为25,再对26求余,得到25,再加上'A',得到'Z'。
再比如27,先减1,得到26,26%26为0,0+'A'为'A'。参考10进制理解即可!

代码实现

class Solution {
public:
    string convertToTitle(int n) {
        // 26进制
        string res;
        while(n) {
            n--;
            res.append(1, n % 26 + 'A');
            n = n / 26;
        }
        return string(res.rbegin(), res.rend());
    }
};