华为编程题-excel中的26进制转化

将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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值