Add Strings
LeetCode 415 | Difficulty: Easyβ
EasyProblem Descriptionβ
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.
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 <= 10^4`
- `num1` and `num2` consist of only digits.
- `num1` and `num2` don't have any leading zeros except for the zero itself.
Topics: Math, String, Simulation
Approachβ
Mathematicalβ
Look for mathematical patterns or formulas. Consider: modular arithmetic, GCD/LCM, prime factorization, combinatorics, or geometric properties.
Problems with clear mathematical structure, counting, number properties.
String Processingβ
Consider character frequency counts, two-pointer approaches, or building strings efficiently. For pattern matching, think about KMP or rolling hash. For palindromes, expand from center or use DP.
Anagram detection, palindrome checking, string transformation, pattern matching.
Solutionsβ
Solution 1: C# (Best: 152 ms)β
| Metric | Value |
|---|---|
| Runtime | 152 ms |
| Memory | N/A |
| Date | 2018-09-25 |
public class Solution {
public string AddStrings(string num1, string num2) {
int carry=0;
int m = num1.Length-1;
int n = num2.Length-1;
StringBuilder sb = new StringBuilder();
while(m>=0 && n>=0)
{
int result = (num1[m]-'0') + (num2[n]-'0') + carry;
sb.Insert(0,$"{result%10}");
carry = result/10;
m--;
n--;
}
while(m>=0)
{
int result = (num1[m] - '0') + carry;
sb.Insert(0, $"{result % 10}");
carry = result / 10;
m--;
}
while(n>=0)
{
int result = (num2[n] - '0') + carry;
sb.Insert(0, $"{result % 10}");
carry = result / 10;
n--;
}
if(carry!=0) sb.Insert(0, $"{carry}");
return sb.ToString();
}
}
Complexity Analysisβ
| Approach | Time | Space |
|---|---|---|
| Solution | $O(n)$ | $O(1) to O(n)$ |
Interview Tipsβ
- Start by clarifying edge cases: empty input, single element, all duplicates.