From 1e7601d337f47f6766aa72fb29f08f0b1c7dcc52 Mon Sep 17 00:00:00 2001 From: juan Date: Mon, 5 Sep 2022 17:13:55 +0800 Subject: [PATCH] vault backup: 2022-09-05 17:13:55 --- OJ notes/pages/Leetcode Add-Strings.md | 90 ++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 OJ notes/pages/Leetcode Add-Strings.md diff --git a/OJ notes/pages/Leetcode Add-Strings.md b/OJ notes/pages/Leetcode Add-Strings.md new file mode 100644 index 0000000..fe79c9a --- /dev/null +++ b/OJ notes/pages/Leetcode Add-Strings.md @@ -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; + } +}; +``` \ No newline at end of file