168. Excel表列名称(Python)

题目

难度:★☆☆☆☆
类型:数学

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

例如,

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

示例

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

示例 2:

输入: 28
输出: "AB"

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

解答

这道题与进制转换类似,实际上十进制与二十六进制的相互转换,是【题目171. Excel表列序号】的逆过程,需要注意的是,这里名称“A”对应的是第1列而不是第0列,在计算时需要先将列序号减一然后进行转换。除了可以用字典,这里我们使用更便捷的ascii码字符与数字的对应关系进行转换,字母“A”和“Z”对应的ascii码分别为65和90。

class Solution(object):
    def convertToTitle(self, n):
        """
        :type n: int
        :rtype: str
        """

        res = ''                            # 结果
        while n:                            # 当商大于0时
            n -= 1                          # 要先减1才能找到对应的数字
            r, n = n % 26, n // 26          # 获取当前的商和余数
            res = chr(65+r) + res           # 寻找当前位对应的字符,加入到结果的最高位
        return res

如有疑问或建议,欢迎评论区留言~

你可能感兴趣的:(168. Excel表列名称(Python))