415. Add Strings (Easy)
Given two non-negative integers num1
and num2
represented as string, return the sum of num1
and num2
.
Note:
- The length of both
num1
andnum2
is < 5100. - Both
num1
andnum2
contains only digits 0-9. - Both
num1
andnum2
does not contain any leading zero. - You must not use any built-in BigInteger library or convert the inputs to integer directly.
Solution: String, Math
这道题让我们求两个字符串的相加,之前LeetCode出过几道类似的题目,比如二进制数相加,还有链表相加,或是字符串加1,基本思路很类似,都是一位一位相加,然后算和算进位,最后根据进位情况看需不需要补一个高位,难度不大,参见代码如下:
class Solution {
public:
string addStrings(string num1, string num2) {
string res;
int n1 = num1.size(), n2 = num2.size();
int carrier = 0;
while (n1 || n2) {
int tmp = carrier;
if (n1) tmp += num1[--n1]-'0';
if (n2) tmp += num2[--n2]-'0';
res += tmp%10+'0';
carrier = tmp/10;
}
if (carrier) res += '1';
return string(res.rbegin(), res.rend());
}
};
version 2: 15ms
class Solution {
public:
string addStrings(string num1, string num2) {
string res;
int n1 = num1.size()-1, n2 = num2.size()-1;
int carrier = 0;
while (n1 >= 0 || n2 >= 0) {
if (n1 >= 0) carrier += num1[n1--]-'0';
if (n2 >= 0) carrier += num2[n2--]-'0';
res = to_string(carrier%10)+res;
carrier /= 10;
}
return carrier ? "1"+res:res;
}
};