python实现Excel表列名称

LeetCode- Excel表列名称

题目描述

给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。
例如:
在这里插入图片描述

示例一:
在这里插入图片描述

示例二:
在这里插入图片描述

示例三:
在这里插入图片描述

示例四:
在这里插入图片描述

思路说明

先使用一个字典记录下1-26和A-Z的对应关系,然后将输入的列数依次取余,得到的余数再取对应位置的字母,接下来再取列数除以26的商,若商能继续除以26有余数则继续,直到整除,当商在1-26之间的时候,还要再加上商对应的字母。由以上课看出,是从余数开始逆着向前推导的,由此得到的列序号也是逆序的,最后需要反转字符串。需要主要的是列数输入为52的情况,52/26=2···0,52能整除26,则对应的字母是Z,商是2,表示的是A-Z之后的AA-AZ,所以还要再加上2-1=1所对应的字母。
详见代码。欢迎大家批评指正。

代码实现

class Solution(object):
    def convertToTitle(self, columnNumber):
        """
        :type columnNumber: int
        :rtype: str
        """
        zimu_dic = {}
        for i in range(0, 26):
            zimu_dic[i + 1] = chr(i + ord('A'))
        string_index = ''
        while columnNumber:
            yushu = columnNumber % 26
            if yushu != 0:
                string_index = string_index + zimu_dic[yushu]
            else:
                string_index = string_index + zimu_dic[26]
                columnNumber = columnNumber // 26
                if columnNumber > 1:
                    string_index = string_index + zimu_dic[columnNumber - 1]

                break
            columnNumber = columnNumber // 26
        string_index = string_index[::-1]
        return string_index



补充

  1. 可以使用//求取两数相除的商、%求取两数相除的余数。如果用/的话,得到的为一个浮点数。
  2. 使用一个字典记录下1-26和A-Z的对应关系:
 zimu_dic = {}
 for i in range(0, 26):
     zimu_dic[i + 1] = chr(i + ord('A'))
  其中,ord()函数将字符转换为整数显示,chr()函数将整数转换为字符显示.
  1. 字符串反转:
    string_index = string_index[::-1],等价于 string_index [-1:-len(string_index )-1:-1],即:从最后一个元素到第一个元素遍历一遍,即可实现字符串反转。

题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/excel-sheet-column-title/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值