36进制加法

 function Test36Bin(s, t) {
        let chars = '0123456789abcdefghijklmnopqrstuvwxyz';
        let carry = 0;
        let result = '';
        for (let i = s.length - 1, j = t.length - 1; s[i] || t[j]; --i, --j) {
            let sum = carry + (s[i] ? chars.indexOf(s[i]) : 0) + (t[j] ? chars.indexOf(t[j]) : 0);
            carry = Math.floor(sum / 36)
            let r = sum % 36;
            result += chars[r];
        }
        if (carry) {
            result += '1'
        }
        return result.split('').reverse().join('');
    }

思路类似大数相加、链表相加。

核心要点:从右往左相加,遇到有进制,carry = 1,保存下次使用,直到遍历完两个字符串,为了处理字符串长度不一的问题,使用三元运算符做处理,字符串长度不足用0补足。

要注意的地方:最后需要单独处理carry,并反转字符串。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值