/**
* @param {number} n
* @return {string}
*/
var convertToTitle = function(n) { // fromCharCode();
if(n===0){
return 0;
}
var str = [];
while(n>0){
n--;
code = String.fromCharCode(n%26+65);
n = Math.floor(n/26);
str.push(code);
}
return str.reverse().join("");
};
这道题的核心是使用了JS的方法String.fromCharCode,它可以将数字转化为对应的ascii码。
另外,这道题相当于是一个26进制的转化,但是给的题目比较迷惑,因为没有0,所以我们必须自己手动转化,将A看作0,将Z看做25…所以n–这一步是必须做的。
还有一道题和这道题目的转换方向相反,在这里也给出代码:
171. Excel Sheet Column Number:
/**
* @param {string} s
* @return {number}
*/
var titleToNumber = function(s) {// 26进制问题
var len = s.length;
if(len===0){
return 0;
}
var sum = 0;
for(var i=0;i<len;i++){
var cur = s.charCodeAt(i)-64;
sum = sum * 26 + cur;
}
return sum;
};