【LeetCode 简单题】37-Excel表列名称

声明:

今天是第37道题。给定一个正整数,返回它在 Excel 表中相对应的列名称。以下所有代码经过楼主验证都能在LeetCode上执行成功,代码也是借鉴别人的,在文末会附上参考的博客链接,如果侵犯了博主的相关权益,请联系我删除

(手动比心ღ( ´・ᴗ・` ))

正文

题目:给定一个正整数,返回它在 Excel 表中相对应的列名称。

例如表内容如下:

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

示例 1:

输入: 1
输出: "A"

示例 2:

输入: 28
输出: "AB"

示例 3:

输入: 701
输出: "ZY"

解法1。这道题本质上就是10进制转26进制(用26个字母表示),规则和10进制转2进制是完全一样的,从右数第i位表示26^{i-1}
所以用取余的方式获取低位字母,再除以26取整不断向高位迭代,之所以取n-1是因为根据题干要求,输入从1开始,当中涉及到2个API,解释和代码如下。

  • chr(int n):ASCII码转字符,chr(65)='A',chr(66)='B',以此类推;
  • ord(str char):字符转ASCII码 ord(str),ord('A')=65,ord('B')=66,以此类推;
class Solution(object):
    def convertToTitle(self, n):
        """
        :type n: int
        :rtype: str
        """
        if not n:
            return False
        result = ''
        while n != 0:    # 这里必须是‘!=0’,不可以是‘<=0’或者‘<0’,亲测
            # 此处2个要注意的点:1.chr()是把数字索引转换为对应的字母,ord('A') = 65, chr(65)='A',chr(66)='Z',…以此类推;
            # 2.上一轮result结果放在后面,因为题干要求显示成这样,比如28=‘AB’
            result = chr((n-1)%26 + ord('A') + result 
            n = (n-1)/26   # 低位的字母已映射,接下来映射高位的字母
            

结尾

解法1:https://blog.csdn.net/qq_34364995/article/details/80518205

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值