天天看点

Excel表列名称[LeetCode-168]

题目描述

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(, n %  + 'A');
            n = n / ;
        }
        return string(res.rbegin(), res.rend());
    }
};
复制代码