notes/OJ notes/pages/Leetcode Add-Strings.md
2022-09-05 17:13:55 +08:00

1.6 KiB

Leetcode Add-Strings

2022-09-05 17:07

Data structures:

#DS #string

Difficulty:

#coding_problem #difficulty-easy

Additional tags:

#leetcode

Revisions:

N/A


Problem

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

You must solve the problem without using any built-in library for handling large integers (such as BigInteger). You must also not convert the inputs to integers directly.

Examples

Example 1:

Input: num1 = "11", num2 = "123" Output: "134"

Example 2:

Input: num1 = "456", num2 = "77" Output: "533"

Example 3:

Input: num1 = "0", num2 = "0" Output: "0"

Constraints

  • 1 <= num1.length, num2.length <= 104
  • num1 and num2 consist of only digits.
  • num1 and num2 don't have any leading zeros except for the zero itself.

Thoughts

[!summary] This is a #string operation problem

Straightforward, just think how to calculate IRL.

#TODO: try out faster solutions in discussion

Solution

class Solution {
public:
  string addStrings(string num1, string num2) {
    string ans = "";
    int sum = 0;

    while (!num1.empty() || !num2.empty() || sum != 0) {
      if (!num1.empty()) {
        sum += num1.back() - '0';
        num1.pop_back();
      }
      if (!num2.empty()) {
        sum += num2.back() - '0';
        num2.pop_back();
      }
      ans.insert(0, 1, (sum % 10) + '0');
      sum = sum / 10;
    }

    return ans;
  }
};