Probelm Description
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
Thinking:
這個問題是 Easy 型的,也就是比較簡單,但是如果不想清楚,很難做對。因爲這個題目比較彆扭的是列數計數不是從 0 開始的,而是從1開始的,比如從 26(Z) 到 27(AA) , 如果直接看成 26 進制的數的話, 會發現Z(26) 加1直接變成了AA(11),而不是我們習慣的(10)。所以需要特別注意一下。
我們先來看一個字符串表示的數字好了,用
比如對於字符 ZZZ 表示的整數爲
那麼 ZZZ 的下一列,也就是 AAAA =
Python Code:
由上面的分析可以看到,可以不斷地除以26,得到的餘數就是當前位,不過需要注意的是,當餘數爲0的時候,說明當前位表示的數應該是26(Z),這時候要把商減去1。
class Solution(object):
def convertToTitle(self, n):
"""
:type n: int
:rtype: str
"""
resStr = ""
numMod = n
while True:
if numMod <= 0:
break
numMod, numRem = divmod(numMod, 26)
if numRem == 0:
numMod -= 1
resStr = "Z"+resStr
else:
resStr = chr(64+numRem)+resStr
return resStr