字符串相加

给定两个字符串形式的非负整数 num1num2 ,计算它们的和并同样以字符串形式返回。

你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。

示例 1:

输入:num1 = "11", num2 = "123"
输出:"134"

示例 2:

输入:num1 = "456", num2 = "77"
输出:"533"

示例 3:

输入:num1 = "0", num2 = "0"
输出:"0"

代码如下:

class Solution {
public:
    string addStrings(string num1, string num2) {
        string res="";//定义字符串
        int i=num1.size()-1,j=num2.size()-1,carry=0;//从两个数组的最后开始,向前进行相加
        while(i>=0||j>=0)
        {
            int m=i>=0?num1[i]-'0':0;//如果此时没有数字就补0
            int n=j>=0?num2[j]-'0':0;
            int temp=m+n+carry;//所有数相加
            carry=temp/10;//求进位
            res+=to_string(temp%10);//将余数存进字符串里
            i--;//往前遍历
            j--;
        }
        if(carry==1)
        {
            res+="1";//到最头了,多了一位进位,直接放进字符串里
        }
        reverse(res.begin(),res.end());//最后反转字符串就是最终结果
        return res;

    }
};

你可能感兴趣的:(c++,数据结构,leetcode)