2023年5月14日 星期日

5/14 每日一題 (26進位)

 Given an integer columnNumber, return its corresponding column title as it appears in an Excel sheet.

For example:

A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28 
...

 

Example 1:

Input: columnNumber = 1
Output: "A"

Example 2:

Input: columnNumber = 28
Output: "AB"

Example 3:

Input: columnNumber = 701
Output: "ZY"

 

Constraints:

  • 1 <= columnNumber <= 231 - 1

class Solution:
    def convertToTitle(self, columnNumber: int) -> str:
        res=[]
        while columnNumber>0:
            x=(columnNumber-1)%26  
    #(因為遇到26時會變成0,所以-1,26才會等於Z, 以0-25 對應到A-Z)
            letter=chr(x+65)   #chr(65)=A  
            res.append(letter)
    #(最開始的餘數事最低位數的對應值)
            columnNumber=(columnNumber-1)//26  
    #(ex:52對應AZ, 因為餘數在26時會是0所以要-1,控制在0-25的範圍)
    #(//26 是為了進入下一位數的計算)
        return ''.join(reversed(res))  
    #[最低位數|中間位數|最高位數]所以要反轉

標籤:

0 個意見:

張貼留言

訂閱 張貼留言 [Atom]

<< 首頁