题目
难度:★☆☆☆☆
类型:数学
给定一个正整数,返回它在 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
如有疑问或建议,欢迎评论区留言~