【LeetCode】171. Excel表列序號
阿新 • • 發佈:2018-12-17
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;
}