171. Excel 表列序号
171. Excel 表列序号
题目
Given a string columnTitle
that represents the column title as appears in an Excel sheet, return its corresponding column number.
For example:
A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...
Example 1:
Input: columnTitle = "A"
Output: 1
Example 2:
Input: columnTitle = "AB"
Output: 28
Example 3:
Input: columnTitle = "ZY"
Output: 701
Constraints:
1 <= columnTitle.length <= 7
columnTitle
consists only of uppercase English letters.columnTitle
is in the range["A", "FXSHRXW"]
.
题目大意
给你一个字符串 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"]
内
解题思路
- 初始化变量
res = 0
,用于存储最终结果。 - 遍历字符串
columnTitle
,从高位到低位,依次将字符对应的数值按权重加到结果中。- 计算当前字符的数值
cur = columnTitle.charCodeAt(i) - 'A'.charCodeAt() + 1
。 - 权重按从左到右递增的 26 次幂计算,按权重更新结果:
res = res * 26 + cur
。
- 计算当前字符的数值
- 遍历结束后,
res
即为结果,返回res
。
复杂度分析
- 时间复杂度:
O(n)
,其中n
是字符串columnTitle
的长度。我们需要遍历字符串一次。 - 空间复杂度:
O(1)
,只使用常量级变量存储中间结果。
代码
/**
* @param {string} columnTitle
* @return {number}
*/
var titleToNumber = function (columnTitle) {
let res = 0; // 初始化结果
for (let i = 0; i < columnTitle.length; i++) {
const cur = columnTitle.charCodeAt(i) - 'A'.charCodeAt() + 1; // 计算当前字符数值
res = 26 * res + cur; // 按 26 进制规则更新结果
}
return res; // 返回最终结果
};
相关题目
题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
---|---|---|---|---|---|
168 | Excel 表列名称 | [✓] | 数学 字符串 | 🟢 | 🀄️ 🔗 |
2194 | Excel 表中某个范围内的单元格 | [✓] | 字符串 | 🟢 | 🀄️ 🔗 |