JS练习5

要求给定两个整数的字符串表示形式,返回这些整数之和的字符串表示形式。

例如:

sumStrings('1','2') // => '3'

思路看着非常简单,转成数字类型计算再转换回来就行,不过JS在小数点前的数字多于21位还有小数点后的零多于5个会变成科学计数法,这时候计算就会损失精度了,可以吧字符串转换成数组,一位一位的拆分计算

function sumStrings(a,b) { 
      var x1 =[];
      var y1 =[];
      //c是用来在相加超过10进1时使用
      var c=0;
      var nstr='';
      var narr=[];
      for (let j of a){
        x1.push(j)
      }
      for (let j of b){
        y1.push(j)
      }
      //反转补0
      x1.reverse();
      y1.reverse();
      if(x1.length>y1.length){
        for (let i = (y1.length);i<(x1.length);i++){
          y1.push('0')
        }
      }
      if(x1.length<y1.length){
        for (let i = (x1.length);i<(y1.length);i++){
          x1.push('0')
        }
      }
      //再次反转进行计算
      x1.reverse();
      y1.reverse();
       for(let i =(x1.length-1);i>-1;i-- ){
         let zs =String(Number(x1[i])+Number(y1[i])+c)
         if(zs.length>1){
           narr.push(zs[1])
           c=1
         }else{
           narr.push(zs)
           c=0
         }     
       }
       //末尾进1
       if(c==1){
         narr.push('1')
       }
     //反转拼接移除头部的0,  
 return narr.reverse().join("").replace(/\b(0+)/gi,"");
}

只能计算正整数的加法,不过思路这样减法可以类推,
如果吧字符串分割成多位可以提高效率

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值