字符串相加(C++)

360 阅读1分钟

字符串相加

难度简单621收藏分享切换为英文接收动态反馈

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

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

 

示例 1:

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

示例 2:

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

示例 3:

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

 

 

提示:

  • 1 <= num1.length, num2.length <= 104
  • num1 和num2 都只包含数字 0-9
  • num1 和num2 都不包含任何前导零
class Solution {
public:
    string addStrings(string num1, string num2) {
        int len1 = num1.size() - 1, len2 = num2.size() - 1, carry = 0;
        string ans = "";
        // 这个题就是高精度加法的转换题 
        while(len1 >= 0 || len2 >= 0 || carry != 0)
        {
            int x = len1 >= 0 ? num1[len1] - '0' : 0;
            int y = len2 >= 0 ? num2[len2] - '0' : 0;
            int t = x + y + carry;
            ans.push_back('0' + t % 10);
            carry = t / 10;
            len1 -= 1;
            len2 -= 1;
        }
        reverse(ans.begin(), ans.end());
        return ans;
    }
};