title: 每日一練(42):Excel表序號
categories:[劍指offer]
tags:[每日一練]
date: 2022/04/14
每日一練(42):Excel表序號
給你一個字串 columnTitle ,表示 Excel 表格中的列名稱。返回 該列名稱對應的列序號 。
例如:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
示例 1:
輸入: columnTitle = "A"
輸出: 1
示例 2:
輸入: columnTitle = "AB"
輸出: 28
示例 3:
輸入: columnTitle = "ZY"
輸出: 701
提示:
1 <= columnTitle.length <= 7
columnTitle 僅由大寫英文組成
columnTitle 在範圍 ["A", "FXSHRXW"] 內
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/probl...
方法一: 進位制轉換(從前到後)
思路分析
這道題要求將 Excel 表中的列名稱轉換成相對應的列序號。由於 Excel 表的列名稱由大寫字母組成,大寫字母共有 26 個,因此列名稱的
表示實質是 26 進位制,需要將 26 進位制轉換成十進位制。
26進位制轉換,根據ASCII碼得到值。
int titleToNumber(string columnTitle) {
int ans = 0;
for (char c : columnTitle) {
int k = c - 'A' + 1;
ans = ans * 26 + k;
}
return ans;
}
方法二:進位制轉換(從後到前)
思路分析
26進位制轉換,根據ASCII碼得到值。
int titleToNumber(string columnTitle) {
int ans = 0;
long multiple = 1;
int n = columnTitle.length() - 1;
for (int i = n; i >= 0; --i) {
int k = columnTitle[i] - 'A' + 1;
ans += k * multiple;
multiple *= 26;
}
return ans;
}