1. 程式人生 > >LeetCode演算法題171:Excel表列序號解析

LeetCode演算法題171:Excel表列序號解析

給定一個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