【leetcode】Python實現-168.Excel表列名稱
阿新 • • 發佈:2019-01-10
168.Excel表列名稱
描述
給定一個正整數,返回它在 Excel 表中相對應的列名稱。
例如,
1 -> A
2 -> B
3 -> C
…
26 -> Z
27 -> AA
28 -> AB
…
示例
輸入: 1
輸出: “A”輸入: 28
輸出: “AB”輸入: 701
輸出: “ZY”
我
class Solution(object):
def convertToTitle (self, n):
"""
:type n: int
:rtype: str
"""
d = {}
r = []
a = ''
for i in range(1,27):
d[i] = chr(64+i)
if n <= 26:
return d[n]
if n % 26 == 0:
n = n/26 - 1
a ='Z'
while n > 26:
s = n % 26
n = n // 26
r.append(s)
result = d[n]
for i in r[::-1]:
result+=d[i]
return result + a
通過了leetcode,但是自己測試,發現程式碼並不對。輸入值為x乘以26,其中x-1可以被26整除時,我的程式就沒法執行。hhh萬萬沒想到居然貢獻了一個測試用例。
別人。將十進位制轉換為二十六進位制,但是從1開始,所以需要減一個1。emmm…涉及到數學推導的我也理解很慢,需要請教一下別人加深理解。
class Solution(object):
def convertToTitle(self, n):
"""
:type n: int
:rtype: str
"""
#需要注意26時:26%26為0 也就是0為A 所以使用n-1 A的ASCII碼為65
result = ""
while n != 0:
result = chr((n-1)%26+65) + result
n = (n-1)/26
return result
總結一下:
字元與ASCII碼的轉換:
- 字元轉ASCII碼 ord(str),如ord(‘A’)為65
- ASCII碼轉字元 chr(int),如chr(65)為’A’