LeetCode 171 Excel表列序号[进制转换] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 171 Excel表列序号[进制转换] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。

解题思路:
如果理解成26进制数转换成10进制数,是不是就特别好理解了?代码如下:

class Solution {
public:
    int titleToNumber(string columnTitle) {
        int num = 0;
        long long mult = 1;
        for(int i = columnTitle.size() - 1; i >= 0; i --) {
            int k = (columnTitle[i] - 'A' + 1);
            num += k * mult;
            mult *= 26; 
        }
        return num;
    }
};

其实,这种类型还可以换个形式,即10进制转成26进制,这个可能就复杂了一点,但是思路都是一样的,只不过需要把将 1——26 转换成 0 —— 25,变成标准的26进制,代码如下:

class Solution {
public:
    string convertToTitle(int columnNumber) {
        string res;
        while(columnNumber) { 
            // 将 1——26 转换成 0 —— 25,变成标准的26进制
            columnNumber --;
            int num = columnNumber % 26;
            res += 'A' + num;
            columnNumber /= 26;
        } 
        reverse(res.begin(), res.end());
        return res;
    }
};

以上是关于LeetCode 171 Excel表列序号[进制转换] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode171. Excel 表列序号(C++)

LeetCode171. Excel 表列序号(C++)

LeetCode171. Excel 表列序号

[E进位制] lc171. Excel表列序号(进位制+进制转换)

每日一题之LeetCode 171excel表列序号

LeetCode 815. 公交路线 / 909. 蛇梯棋(还是bfs)/ 168. Excel表列名称 / 171. Excel表列序号