给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。
例如:

  1. A -> 1
  2. B -> 2
  3. C -> 3
  4. ...
  5. Z -> 26
  6. AA -> 27
  7. AB -> 28
  8. ...

示例 1:

输入:columnNumber = 1
输出:"A"

示例 2:

输入:columnNumber = 28
输出:"AB"

示例 3:

输入:columnNumber = 701
输出:"ZY"

示例 4:

输入:columnNumber = 2147483647
输出:"FXSHRXW"

提示:

  • 1 <= columnNumber <= 2^31 - 1

    解法一:数学法

    function convertToTitle(columnNumber: number): string {
    let res = ""
    while (columnNumber > 0) {
      columnNumber--
      let tmp = columnNumber % 26
      res = String.fromCharCode(65 + tmp) + res
      columnNumber = Math.floor(columnNumber / 26)
    }
    return res
    };
    

    解法二:逻辑法

    通常的做法我们是 取余进制转换。
    这时候我们会遇到 701的问题:
    168.Excel表列名称 - 图1
    168.Excel表列名称 - 图2

问题也就出在当余数是 0 的时候我们应该怎么处理,余数是 0 的时候我们应该取 26 而不应该是 0,所以就是如下了。

const ACharCode = 'A'.charCodeAt(0)
function convertToTitle(columnNumber: number): string {
  let res = ""
  while (columnNumber > 0) {
    let tmp = columnNumber % 26
    if (tmp === 0) {
      columnNumber -= 26
      tmp = 26
    }
    res = String.fromCharCode(64 + tmp) + res
    columnNumber = Math.floor(columnNumber / 26)
  }
  return res
};