# Leetcode Add-Strings

2022-09-05 17:07

> ##### Data structures:
>
> #DS #string
>
> ##### Difficulty:
>
> #coding_problems #difficulty_easy
>
> ##### Additional tags:
>
> #leetcode
>
> ##### Revisions:
>
> N/A

##### Links:

- [Link to problem](https://leetcode.com/problems/add-strings/)

  ***

### 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

```cpp
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;
}
};
```
