vault backup: 2022-09-05 17:13:55

This commit is contained in:
juan 2022-09-05 17:13:55 +08:00
parent f18afcaa6a
commit 1e7601d337

View file

@ -0,0 +1,90 @@
# 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;
}
};
```