171. Excel表列序号
给定一个Excel表格中的列名称,返回其相应的列序号。
例如,
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
示例 1:
输入: "A"
输出: 1
示例 2:
输入: "AB"
输出: 28
示例 3:
输入: "ZY"
输出: 701
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/excel-sheet-column-number
一点一点想了一堆写法
class Solution: def titleToNumber(self, s: str) -> int: letters=[chr(i+97).upper() for i in range(26)] dict={i:ord(i)-64 for i in letters} return sum(26**i*dict[j] for i,j in enumerate(s[::-1]))
class Solution: def titleToNumber(self, s: str) -> int: dict={} for i in range(1,27): dict[chr(i+64)]=i return sum(26**i*dict[j] for i,j in enumerate(s[::-1]))
发现py 不是有个ord()函数嘛,遂舍掉dict
class Solution: def titleToNumber(self, s: str) -> int: return sum(26**i*(ord(j)-64) for i,j in enumerate(s[::-1]))
然而以上代码效率都在50%左右,不要停下来啊 !
于是抓住以上代码的本质,写了一个更加易懂的
class Solution: def titleToNumber(self, s: str) -> int: res=0 for c in s: res*=26 res+=ord(c)-ord('A')+1 return res
这个问题本质上就这样一个循环,没什么花俏的东西
居然90%了,溜了