算法
(模拟) $O(n)$
将两个数解析后相加即可
C++ 代码
class Solution {
public:
string addStrings(string num1, string num2) {
string res = "";
int m = num1.size(), n = num2.size(), i = m - 1, j = n - 1, flag = 0;
while (i >= 0 || j >= 0) {
int a, b;
if(i >= 0){
a = num1[i--] - '0';
}
else{
a = 0;
}
if( j >= 0){
b = num2[j--] - '0';
}
else{
b = 0;
}
int sum = a + b + flag;
res.insert(res.begin(), sum % 10 + '0');
flag = sum / 10;
}
return flag ? "1" + res : res;
}
};
Java 代码
class Solution {
public String addStrings(String num1, String num2) {
StringBuilder res = new StringBuilder();
int n = num1.length();
int m = num2.length();
int idx1 = n - 1;
int idx2 = m - 1;
int carry = 0;
while (idx1 >= 0 || idx2 >= 0) {
int sum = carry;
if (idx1 >= 0) {
sum += num1.charAt(idx1--) - '0';
}
if (idx2 >= 0) {
sum += num2.charAt(idx2--) - '0';
}
res.append(sum % 10);
carry = sum / 10;
}
while (carry > 0) {
res.append(carry % 10);
carry /= 10;
}
return res.reverse().toString();
}
}