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%了,溜了

  • 相关阅读:
    谷歌json数据格式化插件
    引用图片出现403的解决办法
    CSS Sprite
    语义化标签
    响应式布局
    CSS浮动布局详解
    ELK华为云的镜像下载地址(ElasticSearch,logstash,kibana)
    redis集群方案--高可用集群
    redis集群方案--哨兵模式
    Redis集群实现分布式锁-RedLock
  • 原文地址:https://www.cnblogs.com/xxxsans/p/13492868.html
Copyright © 2011-2022 走看看