给你一个字符串 columnTitle
,表示 Excel 表格中的列名称。返回该列名称对应的列序号。
例如
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
示例 1:
输入: columnTitle = "A"
输出: 1
示例 2:
输入: columnTitle = "AB"
输出: 28
代码
/**
* @param {string} columnTitle
* @return {number}
*/
var titleToNumber = function(columnTitle) {
// 所以这就是个26进制?
// 我们都知道A的Unicode码是65 这样所有的字母取码后-64即其所代表的数字,然后与其所在位数关联后相加即可
let len = columnTitle.length,
resNum = 0
for (let z = 0; z < len; z++) {
resNum += (columnTitle[z].charCodeAt(0) - 64) * (26 ** (len - 1 - z))
}
return resNum
};
给你一个整数 columnNumber
,返回它在 Excel 表中相对应的列名称。
示例
输入:columnNumber = 1
输出:"A"
代码
/**
* @param {number} columnNumber
* @return {string}
*/
var convertToTitle = function(columnNumber) {
let res = "";
while (columnNumber >= 1) {
// 防止 columnNumber -- < 0
columnNumber--; // 先减1,转为正常26进制
res += String.fromCharCode("A".charCodeAt() + (columnNumber % 26));
// res += ('A' + columnNumber % 26)
columnNumber /= 26;
}
return res.split("").reverse().join(""); // JS版本字符串倒序
};
网友评论