题目详情:https://leetcode.com/problems/excel-sheet-column-number/description/
自己写的代码。首先反转字符串s,以便按照平常从低位开始的思路进行
class Solution(object):
def titleToNumber(self, s):
"""
:type s: str
:rtype: int
"""
s=s[::-1] #反转字符串
num=0
for i in range(len(s)):
num=num+pow(26,i)*(ord(s[i])-64)
return num
so=Solution()
print so.titleToNumber("AZ")
看见别人写的代码,自己模仿了一下,简单明了。从最高位开始到最低位结束,这中思路以前没有遇到过。当s=”AAA”时,
1、i=0时,s[i]=A, num=num*26=0, num=num+(ord(s[i])-64)=0+1=1
2、i=1时,s[i]=A, num=num*26=26, num=num+(ord(s[i])-64)=26+1=27
3、i=2时,s[i]=A, num=num*26=27*26=702, num=num+(ord(s[i])-64)=702+1=703
每一位上的权值由num=num*26
累乘求得,并不是一次性求出,而是由一次次的乘求出的。
class Solution(object):
def titleToNumber(self, s):
"""
:type s: str
:rtype: int
"""
num=0
for i in range(len(s)):
num=num*26
num=num+(ord(s[i])-64)
return num