一.问题描述
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为进一,可以理解为10进制和26进制的转换。
唯一多一步的操作就是把AB...Z映射到1~26。
然后就是字符串是从最后一位往前算。
可以直接反转字符串,也可以自己在索引上反转。
更多leetcode算法题解法: 专栏 leetcode算法从零到结束
三.源码
class Solution:
def titleToNumber(self, s: str) -> int:
res,len_s=0,len(s)
for i in range(len_s-1,-1,-1):
# or directly use reversed(s)
res+=(ord(s[i])-64)*26**(len_s-i-1)
return res