1. 程式人生 > >【LeetCode】171. Excel表列序號

【LeetCode】171. Excel表列序號

1.題目

給定一個Excel表格中的列名稱,返回其相應的列序號。
例如,
A -> 1
B -> 2
C -> 3

Z -> 26
AA -> 27
AB -> 28

示例 1:
輸入: “A”
輸出: 1
示例 2:
輸入: “AB”
輸出: 28
示例 3:
輸入: “ZY”
輸出: 701

2.思路

利用map存放字母和其對應的資料

3.程式碼

int titleToNumber(string s){
     map<char,int>t;
    t['A']=1;
    t['B']=2;
    t['C']=3;
    t[
'D']=4; t['E']=5; t['F']=6; t['G']=7; t['H']=8; t['I']=9; t['J']=10; t['K']=11; t['L']=12; t['M']=13; t['N']=14; t['O']=15; t['P']=16; t['Q']=17; t['R']=18; t['S']=19; t['T']=20; t['U']=21; t['V']=22; t['W']=23; t['X']=24;
t['Y']=25; t['Z']=26; int sum=0;int n=1; for(int i=s.length()-1;i>=0;i--) { map<char,int>::iterator it; it=t.find(s[i]); int m=(it->second)*n; n*=26; sum+=m; cout<<sum<<endl; } return sum; }

4.參考別人

int
titleToNumber(string s) { int len = s.length(); int idx = 0; for(int i=0;i<len;i++){ idx *= 26; idx += s[i] - 'A' + 1; } return idx; }