91 lines
1.6 KiB
Markdown
91 lines
1.6 KiB
Markdown
# Leetcode Add-Strings
|
|
|
|
2022-09-05 17:07
|
|
|
|
> ##### Data structures:
|
|
>
|
|
> #DS #string
|
|
>
|
|
> ##### Difficulty:
|
|
>
|
|
> #coding_problem #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;
|
|
}
|
|
};
|
|
```
|