给定一个Excel表格中的列名称,返回其相应的列序号。
例如,
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
示例1:
输入: "A"
输出: 1
示例2:
输入: "AB"
输出: 28
示例3:
输入: "ZY"
输出: 701
这个题是168题的反向过程,也就是说还是进制转换问题,这次变成了26进制转换10进制问题,那就很简单了,从低位开始,数字*进制的位数次方,不过需要注意的还是字母对应的数字是从1开始的,所以字母减完的数字要加1。
C++源代码:
class Solution {
public:
int titleToNumber(string s) {
int num = 0;
int len = s.length();
for (int i=0;i<len;i++)
num += (int(s[len-1-i]) - int('A') + 1) * pow(26, i);
return num;
}
};
python3源代码:
class Solution:
def titleToNumber(self, s):
"""
:type s: str
:rtype: int
"""
num = 0
lenStr = len(s)
for i in range(lenStr):
num += (ord(s[-1-i])-ord('A')+1)*(26**i)
return num