一 读懂题目
二.?分析,推导解法,产生思路。
解题思路:
进制转换
三 代码实现
def convertToTitle(self, columnNumber):
"""
:type columnNumber: int
:rtype: str
"""
res = ''
while columnNumber > 0 :
num = int(columnNumber % 26)
if num == 0: # 遇到字母Z时,取余为0
res += 'Z'
columnNumber = int((columnNumber-num) /26) - 1
else:
c = chr(num + 64) # 获取最右边的字符
res = res + c
columnNumber = int((columnNumber-num) /26) # 数值向左移一位 当遇到Z的时候会出现问题
return res[::-1]
def convertToTitle1(self, columnNumber):
'''
一般性的进制转换题目无须进行额外操作,是因为我们是在「每一位数值范围在 [0,x)」的前提下进行「逢 x 进一」。
但本题需要我们将从1开始,因此在执行「进制转换」操作前,我们需要先对columnNumber 执行减一操作,从而实现整体偏移。
'''
res = ''
while columnNumber > 0:
columnNumber -= 1
res = res + chr(columnNumber%26 + ord('A')) # 获取最右边的字符
columnNumber = columnNumber // 26 # 数值向左移一位 '//': 整数除法
return res[::-1]
|