168. Excel表列名称

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

例如:

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

示例 1:

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

示例  2:

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

示例 3:

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

示例 4:

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

代码实现

注意这里不是转 26 进制,因为他没有 0,他的范围是[1,26],和正常 0~25 的 26 进制相比,本质上就是每一位多加了 1。
假设 A == 0,B == 1,
那么 AB = 26 * 0 + 1 * 1,
而现在 AB = 26 * (0 + 1) + 1 * (1 + 1),
所以只要在处理每一位的时候减 1,就可以按照正常的 26 进制来处理

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
* @param {number} columnNumber
* @return {string}
*/
var convertToTitle = function (columnNumber) {
let res = "";
while (columnNumber > 0) {
--columnNumber;
res = String.fromCharCode((columnNumber % 26) + "A".charCodeAt()) + res;
columnNumber = Math.floor(columnNumber / 26);
}
return res;
};