将excel中的列数使用26个字母组合表示:
a b c … y z aa ab ac … az ba bb bc … by bz … … zy zz aaa aab …
1 2 3 … 25 26 27 28 29 … 52 53 54 55 … 77 78 … … 701 702 703 704 …
编写一个算法,输入列数,输出对应的字母组合。例如:输入53,输出ba。
function calc(num) {
// 第一个z只是用来占位
let base = 'zabcdefghijklmnopqrstuvwxyz'.split('');
let res = [];
// 短除法,注意余数为0时,将商减1,对应字母'z'
while (num > 26) {
if (num % 26 === 0) {
res.push('z');
num = parseInt(num / 26 - 1);
} else {
res.push(base[num % 26]);
num = parseInt(num / 26);
}
}
// 不要忘了末位
res.push(base[num]);
// 倒置
return res.reverse().join('');
}
console.log(calc(26));// z
console.log(calc(27));// aa
console.log(calc(703));// aaa