字符串相加

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。

注意:

num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-strings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution {
public:
    string addStrings(string num1, string num2) {
        string res="";
        string str1="",str2="";
        if(num1.size()>num2.size()){
            str1 = num1;
            res = num1;
            str2 = num2;
        }else{
            str1 = num2;
            res = num2;
            str2 = num1;
        }

        int i=str1.size()-1,j=str2.size()-1;
        int flag =0;
        int s=0;
        while(i>=0&&j>=0){
            if(s+str1[i]-'0'+str2[j]-'0'>=10){
                res[i]=s+str1[i]-'0'+str2[j]-'0'-10+'0';
                s=1;
            }else{
                res[i]=s+str1[i]-'0'+str2[j]-'0'+'0';
                s=0;
            }
            --i;
            --j;
        }
        if(s&&(i==-1&&j==-1)){
            return '1'+res;
        }
        //后面是不等长的部分
        if(s){
            while(i>=0){
                if(res[i]-'0'+s>=10){
                    res[i]=res[i]-'0'+s-10+'0';
                    s=1;
                }else{
                    res[i]=res[i]-'0'+s+'0';
                    s=0;
                }
                --i;

            }
        }
        if(s){
            res='1'+res;
        }
        
        return res;
        
        
    }
};

作者:he-zi-11
链接:https://leetcode-cn.com/problems/add-strings/solution/zui-ben-de-fang-fa-by-he-zi-11/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

方法二:
先补0对齐的方法

class Solution {
public:
    string addStrings(string num1, string num2){
        int cha = num1.size()-num2.size();
        int len = abs(cha);
        while(len--){
            num2.size()>num1.size()?num1="0"+num1:num2="0"+num2;
        }
        int i=num1.size()-1;
        int s = 0;
        while(i>=0){
            int n = num1[i]-'0'+num2[i]-'0'+s;
            if(n>=10){
                num1[i] = n-10+'0';
                s=1;
            }else{
                num1[i] = n+'0';
                s=0;
            }
            --i;
        }
        return s==1?"1"+num1:num1;

    }
};

作者:he-zi-11
链接:https://leetcode-cn.com/problems/add-strings/solution/xian-bu-0dui-qi-de-zuo-fa-by-he-zi-11/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值