0%

171. Excel Sheet Column Number

171. Excel Sheet Column Number

1
2
3
4
5
6
7
8
9
10
11
class Solution {
public:
int titleToNumber(string columnTitle) {
int len = columnTitle.size();
int sum = columnTitle.back() - 'A' + 1;
int tmp = 1;
for(int i = len - 2; i >= 0; --i)
sum += (columnTitle[i] - 'A' + 1) * (tmp *= 26);
return sum;
}
};

26进制转为10进制,就n转10差不多

但我还是算的更麻烦了
1
2
3
4
5
6
7
8
9
10
class Solution {
public:
int titleToNumber(string columnTitle) {
int len = columnTitle.size();
int sum = 0;
for(int i = 0; i < len; ++i)
sum = (columnTitle[i] - 'A' + 1) + sum * 26;
return sum;
}
};

review

1
2
3
4
5
6
7
8
9
class Solution {
public:
int titleToNumber(string columnTitle) {
int ret{ 0 };
for(auto ch : columnTitle)
ret = ret * 26 + (ch - 'A' + 1); // 注意这个括号是必要的,因为加法符号是左结合,所以如果没括号会先加ch导致溢出。
return ret;
}
};