持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情
1.描述
给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。
例如:
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"
提示:
- 1 <= columnNumber <= 2^31 - 1
2.分析
将1~26所对应的字母存放于字典中,可以将其看做是个26进制的问题,对所给数字对26取模,所对应的键值即为返回结果最后一位的字符。然后将其对26整除,用以上方法计算倒数第2,3,...个字符。最后将其整个结果反转即为所求结果。值得注意的是:若所给数字是26的倍数,所对应的字符应该为Z。而且将n整除后还需要将整除的结果减一,因为只有前n-1个产生了进位。为了与不能被26整除的数处理一致,故在字典中添加了键为0,值为Z的键值对。
3.AC代码
class Solution:
def convertToTitle(self, n: int) -> str:
dit = {1:'A',2:'B',3:'C',4:'D',5:'E',6:'F',7:'G',8:'H',9:'I',10:'J',11:'K',12:'L',13:'M',14:'N',15:'O',16:'P',17:'Q',18:'R',19:'S',20:'T',21:'U',22:'V',23:'W',24:'X',25:'Y',26:'Z',0:'Z'}
result =""
while n > 26 :
result += dit[n % 26]
if n % 26 ==0:
n = n//26 -1
else:
n //= 26
result +=dit[n]
return result[::-1]
4.总结
题目不难,注意细节
参考
双百不用逆序,参考了很多大佬,一起加油。 - Excel表列名称 - 力扣(LeetCode)