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