zoukankan      html  css  js  c++  java
  • 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%了,溜了

  • 相关阅读:
    【如何使用翻译工具翻译网页】英语没过关的可以参考下。
    HTTP 请求报文和响应报文
    VIM+ctags+cscope用法
    Ubuntu下命令行访问网站
    mini_httpd的安装和配置
    堆排序(代码2)
    插入排序
    堆排序(代码1)
    快速排序
    Python中的控制流
  • 原文地址:https://www.cnblogs.com/xxxsans/p/13492868.html
Copyright © 2011-2022 走看看