【LeetCode] 171 Excelの表の列数

1タイトル説明

Excelスプレッドシートの列名が与えられ、対応する列番号を返します。

たとえば、

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

例1:

入力: "A"
出力:1
例2:

入力: "AB"
出力:28
例3:

入力: "ZY"
出力:701

出典:滞在ボタン(LeetCode)
//leetcode-cn.com/problems/excel-sheet-column-number:リンク:httpsの
すべてのネットワークからの控除が著作権を保有。商業転載は、ソースを明記してください許可公式、非商用の転載をご連絡ください。

2問題解決のアイデア

思考

タグ:文字列トラバーサル、バイナリ変換
の初期化ANS = 0、各文字A及び減算を横断するとき、A 1で表されるように、減算の必要各プラスワンので、文字NUM =を表す計算値結果- '+ 1
26の文字が存在するので、それは26進と等価である、1つ先の26のそれぞれの数
それぞれそうである横断ANS = ANS * 26 + NUM
ケースZYで、26のZ値、25のY値は、結果が26 * 26 + 25 = 701である
時間計算量:O(N)

著者:guanpengchn
リンクします。https://leetcode-cn.com/problems/excel-sheet-column-number/solution/hua-jie-suan-fa-171-excelbiao-lie-xu-hao-by-guanpe/
源:電源ボタン(LeetCode)
著者によって予約の著作権。著者は認可商業転載してください接触、非商用の転載は、ソースを明記してください。

3解像度コード

  • Javaコード
class Solution {
    public int titleToNumber(String s) {
        int ans = 0;
        for(int i = 0; i < s.length(); i++){
            int num = s.charAt(i) - 'A' + 1;
            //26进制
            ans = ans*26 + num;
        }
        return ans;
    }
}
  • Pythonコード
class Solution:
    def titleToNumber(self, s: str) -> int:
        ans = 0
        for x in s: 
            num = ord(x)-ord('A')+1
            ans = ans * 26 + num
        return ans
    
    
公開された237元の記事 ウォンの賞賛3 ビュー10000 +

おすすめ

転載: blog.csdn.net/qq_43584847/article/details/104380492