LeetCode演算法題171:Excel表列序號解析
阿新 • • 發佈:2018-11-11
給定一個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