js面试题 大数相加

function bigSum(str1,str2){
var a=str1.split('');
var b=str2.split('');
var alen=a.length;
var blen=b.length;
var result=[]//结果
var current=0//记录进位
var sum=0//记录当前位
var length=Math.max(alen,blen)
    while(alen<length){
        a.unshift('0')
        alen++;
    }
    while(blen<length){
        b.unshift('0')
        blen++;
    }
    for(var i=length-1;i>=0;i--){
        sum=Number(a[i])+Number(b[i])+Number(current)
        current=sum>=10?parseInt(sum/10)
        sum=sum>=10?parseInt(sum%10):sum
        result.unshift(sum)
    } 
    console.log(result)
    return result.join('').replace('/^0/','')
}
console.log(bigSum('100000000000002222', '111111'))

思路:
1.计算两个字符串长度
2.比较两个字符串长度 不够前面补0
3.从个位开始计算 进行两数相加‘
4.进位初始0 每次计算都要加上进位
5.累计值/10计算当前位,然后压进最前面
6.去除最终结果多余的0
7.返回结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值