【前言】坚持日更LeeCode刷题系列
不积跬步,无以至千里;不积小流,无以成江海。愿与诸君共勉!
【题目】168.Excel表列名称
题目描述:给定一个正整数,返回它在 Excel 表中相对应的列名称。
例如:
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
...
示例:
示例 1:
输入: 1
输出: "A"
示例 2:
输入: 28
输出: "AB"
示例 3:
输入: 701
输出: "ZY"。
思路一:
什么?这不就是个进制转化问题吗?有什么看的,跳了跳了。不过当我们仔细去看的时候会发现虽然这是个进制转化的问题,但是它的这种转化与我们平常转化有些许不同,举个例子:
在十进制中,10这个数字,‘1’代表的实际数字为10,因此我们表达10的时候用‘10’
但是在这个例子中我们表达27的时候用的是‘AA’,因为在当前情况下没有表达0的符号,因此第一个’A‘的数值与’Z‘相等
那么这种情况下,我们怎么去处理呢?看完编写的代码你就懂了。具体代码如下:
class Solution(object):
def convertToTitle(self, n):
"""
:type n: int
:rtype: str
"""
result_list = []
while n:
result_list.append(chr((n-1)%26+ord('A')))
'''进制转化,注意此时先对n减1取余,而不是我们平常进制转化中的先取余再减一'''
n = (n-1)//26
return "".join(result_list[::-1])
运行结果:
说明:
如果你还没有弄清楚刚才的进制转化,不妨拿个样例来试下,对比下平常我们进制转化下的做法与当前做法。
分享就到这里了,欢迎大家一起交流讨论。
注明
:
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/excel-sheet-column-title