https://leetcode.com/problems/excel-sheet-column-number/
Given a column title as appear in an Excel sheet, return its corresponding column number.
For example:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
1、首先建立A-Z 与1-26的map,扫描字符串时调用,转换即采用26进制的计算,耗时(20ms)
class Solution {
public:int titleToNumber(string s) {
map<char,int> m;
for(char c = 'A';c<='Z';c++){
m.insert(pair<char,int> (c,c-'A'+1));
}
int len = s.length(),sum = 0;
for(int i = 0;i<len;i++){
sum += m[s[i]]*pow(26,len-1-i);
}
return sum;
}
};
2、直接扫描字符串转换,耗时(8ms)
class Solution {
public:
int titleToNumber(string s) {
int len = s.length(),sum = 0,temp;
for(int i = 0;i<len;i++){
temp = s[i] - 'A' + 1;
sum += temp*pow(26,len-1-i);
}
return sum;
}
};
2、不采用pow(),耗时(12ms)
class Solution {
public:
int titleToNumber(string s) {
int len = s.length(),sum = 0,temp,i;
for(i = 0;i<len-1;i++){
temp = s[i] - 'A' + 1;
sum = (sum+temp)*26;
}
return sum + s[i] - 'A' + 1;
}
};