原题
Given a positive integer, return its corresponding column title as appear in an Excel sheet.
For example:
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
...
Example 1:
Input: 1
Output: “A”
Example 2:
Input: 28
Output: “AB”
Example 3:
Input: 701
Output: “ZY”
解法1
循环. 由于题目中下标从1开始, 所以每次循环是(n-1)%26, 计算与’A’的距离, 从右到左得到对应的字符, 最后将res反转.
代码
class Solution(object):
def convertToTitle(self, n):
"""
:type n: int
:rtype: str
"""
res = ''
while n:
res += chr((n-1)%26 + ord('A'))
n = (n-1)//26
return res[::-1]
解法2
递归, base case是n == 0时, 返回空字符串, 然后每次递归末尾加上(n-1)%26 + ord(‘A’) 对应的字符.
代码
class Solution(object):
def convertToTitle(self, n):
"""
:type n: int
:rtype: str
"""
# base case
if n == 0:
return ''
return self.convertToTitle((n-1)//26) + chr((n-1)%26 + ord('A'))