将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
博客内容介绍了如何使用算法将Excel的列号转换为26进制的字母组合,例如输入53输出'ba'。提供的代码实现了一个基于短除法的转换函数calc,可以将数字转换为对应的字母序列,并在最后返回逆序的字母组合。
2019

被折叠的 条评论
为什么被折叠?



