首页 > 其他 > 详细

171. Excel表列序号

时间:2020-08-12 21:28:06      阅读:85      评论:0      收藏:0      [点我收藏+]

给定一个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%了,溜了

171. Excel表列序号

原文:https://www.cnblogs.com/xxxsans/p/13492868.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!