leetcode-Excel Sheet Column Title

时间:2021-05-27 21:35:32

题目:

  把数字转化为excel形式的字符表示。示例:1->A 2->B 3->C ... 26->Z 27->AA...

解题思路:

  乍一看有点像进制转换题目,不过细想想发现它没有‘0’。所以这时候需要我们仔细观察:很明显,这是26进制的表示方法,但是没有0的表示方法。所以我们来归纳一下,十进制10在这里面怎么表示,是Z,20呢?B*,30是C*,以此类推:

10 - Z

20 - B*

30 - C*

...

260 - YZ

  也就是说当n>0且n%26 == 0时,我们输出Z,并且向上一位借1(这里有点像除法的借位),换而言之,当n%26==0时,我们输出Z之后,在后续的计算中n应该等于 (n-1)/26。所以代码如下

class Solution(object):
def convertToTitle(self, n):
"""
:type n: int
:rtype: str
"""
ret = ''
alpha = 'ZABCDEFGHIJKLMNOPQRSTUVWXY'
while n > 0:
ret = alpha[n%26] + ret
n = (n-1) / 26
return ret