[LeetCode] 171. Excel表列序号

题目链接 : https://leetcode-cn.com/problems/excel-sheet-column-number/

题目描述:

给定一个Excel表格中的列名称,返回其相应的列序号。

例如,

A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28 
...

示例:

示例 1:

输入: "A"
输出: 1

示例 2:

输入: "AB"
输出: 28

示例 3:

输入: "ZY"
输出: 701

思路:

26进制转十进制

class Solution:
    def titleToNumber(self, s: str) -> int:
        res = 0
        bit = 1
        for a in s[::-1]:
            res += (ord(a) - 64) * bit
            bit *= 26
        return res

或者一行代码

import functools
class Solution:
    def titleToNumber(self, s: str) -> int:
        return functools.reduce(lambda x, y: x * 26 + y, [ord(a) - 64 for a in s ])

再或者

class Solution:
    def titleToNumber(self, s: str) -> int:
        return sum( (ord(a) - 64) * (26 ** i)  for i, a in enumerate(s[::-1]))

posted on 2019-08-07 20:19  威行天下  阅读(133)  评论(0编辑  收藏  举报

导航