iT邦幫忙

2022 iThome 鐵人賽

DAY 6
0
自我挑戰組

從leetcode學習資料結構和演算法系列 第 6

Day 6 Excel Sheet Column Number

  • 分享至 

  • xImage
  •  

題目:給定一個欄位的字串,要求出對應到的是第幾欄

Excel欄位命名的規則如下:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...

Case 1
Input: columnTitle = "A"
Output: 1

Case 2
Input: columnTitle = "AB"
Output: 28
原因:26*1(A對應到的數字)+2(B對應到的數字)

Case 3
Input: columnTitle = "ZY"
Output: 701
原因:26*26(Z對應到的數字)+25(Y對應到的數字)

解題思路:其實可以視為另一種進制的表示法,1~26分別對應字母A~Z,超過的話就進位

附上程式碼以及註解

Java

class Solution {
    public int titleToNumber(String s) {
        String dict="ABCDEFGHIJKLMNOPQRSTUVWXYZ";//建立一組字串可以對應26個英文字母
        int result=0;//儲存最後結果的變數
        int count=0;//紀錄有幾位數
        for(int i=s.length()-1;i>=0;i--){//從給定字串的最後一個進行迭代
            int index=dict.indexOf(s.charAt(i))+1;
            //給定字串在第i個時對應到的數字(程式是從第0個開始因此要+1)
            result+=(int)Math.pow(26,count)*index;
            count++;
        }
        return result;
    }
}

Python

class Solution:
    def titleToNumber(self, columnTitle: str) -> int:
        columnTitle=columnTitle[::-1]#反轉字串
        s='ABCDEFGHIJKLMNOPQRSTUVWXYZ'#建立一組字串可以對應26個英文字母
        result=0#儲存最後結果的變數
        count=0#紀錄有幾位數
        for c in columnTitle:
            result+=(s.index(c)+1)*(pow(26,count))
            count+=1
        return result

上一篇
Day 5 Same Tree
下一篇
Day 7 Two Sum
系列文
從leetcode學習資料結構和演算法31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言