スナップショット問題(11)--Excelテーブル列番号--python言語説明--titleToNumber
タイトルの説明:Excelテーブルのカラム名を指定し、対応するカラム番号を返します.
例えば、A->1 B->2 C->3...Z->26 AA->27 AB->28...
例1:入力:A出力:1
例2:入力:「AB」出力:28
例3:入力:「ZY」出力:701
この問題を手に入れた最初の反応は辞書で、それから一つ一つ対応して、26文字が輪廻しています.ただし、1つの文字列または2つの文字列にのみ適用できます.したがって、汎用性はありません.
以下は熱心なネットユーザーが出した問題解です.
解題案
構想ラベル:文字列遍歴、進数変換 初期化結果ans=0であり、Aは1を表すため、減算後は数ごとに1を加算し、その代表する数値num=アルファベット-‘A’+1 を計算する必要がある.は26文字あるので26進数に相当し、26数ごとに1ビット に進む.ですので、1つのパスごとにans=ans*26+num ZYを例にとる、Zの値が26、Yの値が25であると、結果は26*26+25=701 となる.時間複雑度:O(n) コード#コード#
まとめ:抽象出進数変換問題(26進数を10進数に変換) 26進数10進数思考の場合は最下位から26のn乗を乗じて順次加算します.プログラミングの場合は上記のように高位から順に左から右に進むことができます.ansは0から乗るので、左側は実際にはべき乗が2まで(文字列長を3と仮定) をとる.の具体的な進数変換のまとめは、次のように参照できます.https://blog.csdn.net/meegomeego/article/details/49948241
例えば、A->1 B->2 C->3...Z->26 AA->27 AB->28...
例1:入力:A出力:1
例2:入力:「AB」出力:28
例3:入力:「ZY」出力:701
この問題を手に入れた最初の反応は辞書で、それから一つ一つ対応して、26文字が輪廻しています.ただし、1つの文字列または2つの文字列にのみ適用できます.したがって、汎用性はありません.
以下は熱心なネットユーザーが出した問題解です.
解題案
構想
class Solution(object):
def titleToNumber(self, s):
ans = 0;
for i in range (len(s)):
num = ord(s[i]) - ord('A') + 1;
ans = ans * 26 + num;
return ans;
まとめ: