LeetCode题解:171. Excel 表列序号,哈希表,TypeScript,详细注释

原题链接:
https://leetcode.cn/problems/excel-sheet-column-number/

解题思路:

  1. 先回忆一下10进制数的计算方式,假设321,计算式为:result = 3 * 10^2 + 2 * 10^1 + 1 * 10^0
  2. 那么对于该题,即为计算26进制数,将上面算式中的10替换为26即可。
function titleToNumber(columnTitle: string): number {
  let result: number = 0 // 缓存结果
  let baseCode: number = 'A'.charCodeAt(0) // 缓存A的Code,用于计算26个英文字母的Code
  // 生成一个哈希表,缓存26个字母对应的数字
  let map: Map<string, number> = new Map(
    Array.from({ length: 26 }, (item, index) => [
      String.fromCharCode(baseCode + index),
      index + 1,
    ]),
  )

  // i代表当前位的值,j代表26的j次幂
  // i和j相当于两个指针,分别从两端向中间推进
  // 按照计算式,不断累加result即可
  for (
    let i = 0, j = columnTitle.length - 1;
    i < columnTitle.length;
    i++, j--
  ) {
    result += map.get(columnTitle[i]) * Math.pow(26, j)
  }

  return result
};

你可能感兴趣的:(LeetCode,leetcode,excel,散列表)