LeetCode笔记:Excel表列序号

问题

给定一个 Excel 表格中的列名称,返回其相应的列序号。

例如,

A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...

示例 1:

输入: "A"

输出: 1

示例  2:

输入: "AB"

输出: 28

示例  3:

输入: "ZY"

输出: 701

同类型的问题请参考

LeetCode 笔记:Excel 表列名称

解法

思路:

  1. 将字符串反转,转化为数组遍历
  2. 将字符转化为从 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;
};

参考

评论