解题思路:
如果理解成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;
}
};