题目描述
Related to question Excel Sheet Column Title
Given a column title as appear in an Excel sheet, return its corresponding column number.
For example:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
也就是说给你一个字符串,需要输出它代表的excel上的列号。
其实这题就是相当于26进制数的10进制表示。我们可以从个位开始进行计算,这样在得到第n+1位数的次数时,不必重新计算 n26 ,只用在上一次的基础上乘以26就好了,减小计算量。
解决代码
class Solution {
public:
int titleToNumber(string s) {
const int n = 26;
int r = 0;
int power26 = 1;
const char start = 'A';
for (int i = s.size() - 1; i > -1; --i)
{
r += (s[i] - start + 1) * power26;
power26 *= n;
}
return r;
}
};