LeetCode笔记:Excel表列序号
问题
给定一个 Excel 表格中的列名称,返回其相应的列序号。
例如,
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
示例 1:
输入: "A"
输出: 1
示例 2:
输入: "AB"
输出: 28
示例 3:
输入: "ZY"
输出: 701
同类型的问题请参考
解法
思路:
- 将字符串反转,转化为数组遍历
- 将字符转化为从 1 到 26 的数字,根据字符所在的位数处理进位
代码:
/**
* @param {string} columnTitle
* @return {number}
*/
var titleToNumber = function (columnTitle) {
let result = 0;
// 反转字符串并转为数组,用于遍历
columnTitle
.split("")
.reverse()
.forEach((item, i) => {
// 字符转化为UTF-16 code索引值减去64,得到从1开始的索引值,乘26的i平方
// 比如 'BBA' => 2 * 26^2 + 2 * 26^1 + 1 * 26^0
result += (item.charCodeAt() - 64) * Math.pow(26, i);
});
return result;
};
评论