题目:
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 ...
Example 1:
Input: "A" Output: 1
Example 2:
Input: "AB" Output: 28
Example 3:
Input: "ZY" Output: 701
解释:
实际上相当于26进制。
python代码:
class Solution(object):
def titleToNumber(self, s):
"""
:type s: str
:rtype: int
"""
a=0
for i in range(len(s)):
a=26*a+(ord(s[i])-ord('A')+1)
return a
c++代码:
class Solution {
public:
int titleToNumber(string s) {
int result=0;
for (int i=0;i<s.size();i++)
result=result*26+s[i]-'A'+1;
return result;
}
};
其实26进制的代码,下面的写法更经典,也就是从低位遍历,更新base:
class Solution(object):
def titleToNumber(self, s):
"""
:type s: str
:rtype: int
"""
#感觉就是26进制
result=0
n=len(s)
base=1
for i in range(n-1,-1,-1):
result+=base*(ord(s[i])-ord("A")+1)
base*=26
return result
总结: