LeetCode笔记:Excel表列名称
问题
给定一个正整数,返回它在 Excel 表中相对应的列名称。
例如,
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
...
示例 1:
输入: 1
输出: "A"
示例 2:
输入: 28
输出: "AB"
示例 3:
输入: 701
输出: "ZY"
同类型的问题请参考
解法
思路:
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("");
};

评论