【Codewars】<4kyu>Sum Strings as Numbers

题目

<4kyu>Sum Strings as Numbers

Given the string representations of two integers, return the string representation of the sum of those integers.
A string representation of an integer will contain no characters besides the ten numerals “0” to “9”.


给定两个整数的字符串表示形式,返回这些整数之和的字符串表示形式。
(注:这两个字符串将不包含除“0”到“9”之外的任何字符。)

例子

sumStrings('1','2') // => '3'
sumStrings('','5') // => '5'
sumStrings('001','5') // => '6'
sumStrings('50095301248058391139327916261','81055900096023504197206408605') // => '131151201344081895336534324866'

题解一

// 题解一:
function sumStrings(a,b) {
    var result = '';
    var remainder = 0;
    if(a.length < b.length) {
        var c = a;
        a = b;
        b = c;
    }
    for(let i=1;i<=a.length;i++){
        // 从最右边开始,将两个数求和,并加上上一次的余数,首次余数为0
        var sum =  (a.length-(i-1)>0 ? parseInt(a.substr(a.length-i,1)) : 0) + (b.length-(i-1)>0 ? parseInt(b.substr(b.length-i,1)) : 0)  + remainder;
        // 求和后去取余,就是该位要保留的数字
        result = sum%10 + result
        // 计算余数
        remainder = parseInt(sum/10)
        // 如果到了最左边,即a的第一位,余数还大于0,则直接加上余数
        if(remainder > 0 && i == a.length) result = remainder + result;
    }
    return result.replace(/\b(0+)/gi,""); // 去除字符串前面的0
}

题解二(Best Practices)

// 题解二:
function sumStrings(a, b) {
    var res = '', c = 0;
    a = a.split('');
    b = b.split('');
    while (a.length || b.length || c) {
      c += ~~a.pop() + ~~b.pop();
      res = c % 10 + res;
      c = c > 9;
    }
    return res.replace(/^0+/, '');
}

小伙伴们有其它更好的解法,欢迎评论区提出交流~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值