1. 题目描述
2. 代码
1 class Solution: 2 def titleToNumber(self, s: 'str') -> 'int': 3 s = s.upper() 4 n = len(s) 5 sums = 0 6 k = 0 7 for i in range(n-1,-1,-1): 8 asci = ord(s[i]) - 64 9 sums += 26 ** k * asci 10 k += 1 11 return sums
思路: 26个字母, 相当于26进制运算, 跟十进制类似.
从右往左运算, 当前字母在Excel表中值为 ord(c)-64,(因为 ord('A')=65).
3. 整理
3.1 range
1 for i in range(2, -1, -1): 2 print(i)
1 2 2 1 3 0
1 for i in range(0, -1, -1): 2 print(i)
0
3.2 ord() : 以一个字符串(Unicode 字符)作为参数, 返回对应的 ASCII 数值.
1 print(ord('A')) 2 3 65
chr() : 用一个整数作参数, 返回当前整数对应的 ASCII 字符.
1 print(chr(66)) 2 3 B
3.3 x**y , 返回x的y次幂.