LeetCode笔记:Excel表列名称

问题

给定一个正整数,返回它在 Excel 表中相对应的列名称。

例如,

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

示例 1:

输入: 1

输出: "A"

示例  2:

输入: 28

输出: "AB"

示例  3:

输入: 701

输出: "ZY"

同类型的问题请参考

LeetCode 笔记:Excel 表列序号

解法

思路:

10 进制转化为 26 进制,核心算法是不停地整除 26,从右到左找到余数对应的字母

代码:

/**
 * @param {number} columnNumber
 * @return {string}
 */
var convertToTitle = function (columnNumber) {
  // 存储结果
  const arr = [];
  //直到columnNumber小于26即为最后一个循环
  while (columnNumber) {
    //如果是27,减一之后,26 % 26等于0,fromCharCode(0+65)得到下一个A
    columnNumber--;
    const remainder = columnNumber % 26;
    arr.unshift(String.fromCharCode(remainder + 65));
    // 取得26的倍数进行,下一次循环
    columnNumber = parseInt(columnNumber / 26);
  }

  return arr.join("");
};

参考

评论