1. 程式人生 > >【leetcode】Python實現-168.Excel表列名稱

【leetcode】Python實現-168.Excel表列名稱

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’