Skip to content

Latest commit

 

History

History
77 lines (59 loc) · 2.29 KB

File metadata and controls

77 lines (59 loc) · 2.29 KB

https://leetcode-cn.com/problems/excel-sheet-column-title/solution/168excelbiao-lie-ming-cheng-excelbiao-mi-sv3v/

难度:简单

题目

给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。

提示:

  • 1 <= columnNumber <= 231 - 1

例如:

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

示例

示例 1:
输入:columnNumber = 1
输出:"A"

示例 2:
输入:columnNumber = 28
输出:"AB"

示例 3:
输入:columnNumber = 701
输出:"ZY"

示例 4:
输入:columnNumber = 2147483647
输出:"FXSHRXW"

分析

在看这道题之前,建议大家先去阅读下它的逆向题目,看过之后更便于理解这道题。

如果excel的设计A-Z代表0-25,那么就没什么难度了,可是偏偏代表的是1-26,没有零什么事儿! 首先要明确27的excel列表名称是AA,就很明确的告诉大家这是一道10进制转26进制的题目。 唯一绕的就是,我们如何让每一位都从0开始呢?其实想想很简单,每一位的时候, 我们先将当前值减去1,再做计算不就好了嘛! 这里用到python的divmod方法,简便求出结果: 商,余数 = divmod(被除数,除数) 至于65,则是由于chr(65) = "A",既然已经知就没必要每次再转换了...

解题

class Solution:
    def convertToTitle(self, columnNumber: int) -> str:
        ret = ''
        while columnNumber:
            columnNumber -= 1
            columnNumber, num = divmod(columnNumber, 26)
            ret = chr(65 + num) + ret
        return ret

欢迎关注我的公众号: 清风Python,带你每日学习Python算法刷题的同时,了解更多python小知识。

有喜欢力扣刷题的小伙伴可以加我微信(King_Uranus)互相鼓励,共同进步,一起玩转超级码力!

我的个人博客:https://qingfengpython.cn

力扣解题合集:https://github.com/BreezePython/AlgorithmMarkdown