415. Add Strings (Easy)

Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2.

Note:

  1. The length of both num1 and num2 is < 5100.
  2. Both num1 and num2 contains only digits 0-9.
  3. Both num1 and num2 does not contain any leading zero.
  4. You must not use any built-in BigInteger library or convert the inputs to integer directly.

Solution: String, Math

这道题让我们求两个字符串的相加,之前LeetCode出过几道类似的题目,比如二进制数相加,还有链表相加,或是字符串加1,基本思路很类似,都是一位一位相加,然后算和算进位,最后根据进位情况看需不需要补一个高位,难度不大,参见代码如下:

class Solution {
public:
    string addStrings(string num1, string num2) {
        string res;
        int n1 = num1.size(), n2 = num2.size();
        int carrier = 0;
        while (n1 || n2) {
            int tmp = carrier;
            if (n1) tmp += num1[--n1]-'0';
            if (n2) tmp += num2[--n2]-'0';
            res += tmp%10+'0';
            carrier = tmp/10;
        }
        if (carrier) res += '1';

        return string(res.rbegin(), res.rend());
    }
};

version 2: 15ms

class Solution {
public:
    string addStrings(string num1, string num2) {
        string res;
        int n1 = num1.size()-1, n2 = num2.size()-1;
        int carrier = 0;
        while (n1 >= 0 || n2 >= 0) {
            if (n1 >= 0) carrier += num1[n1--]-'0';
            if (n2 >= 0) carrier += num2[n2--]-'0';
            res = to_string(carrier%10)+res;
            carrier /= 10;
        }
        return carrier ? "1"+res:res;
    }
};

results matching ""

    No results matching ""