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之路的主要内容,如果未能解决你的问题,请参考以下文章
[E进位制] lc171. Excel表列序号(进位制+进制转换)
LeetCode 815. 公交路线 / 909. 蛇梯棋(还是bfs)/ 168. Excel表列名称 / 171. Excel表列序号