Given two non-negative numbers 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 digits0-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.
把每个数对应相加,注意保存进位。
最后处理剩余的数和进位。
class Solution {
public:
string addStrings(string num1, string num2) {
int len1 = num1.size();
int len2 = num2.size();
int tmp1, tmp2;
int tmp = 0;
int sum;
string num3 = "";
len1 --;
len2 --;
while(len1 >= 0 && len2 >= 0){
tmp1 = num1[len1 --] - '0';
tmp2 = num2[len2 --] - '0';
sum = tmp1 + tmp2 + tmp;
if(sum >= 10){
tmp = 1;
num3 += sum - 10 + '0';
}else{
tmp = 0;
num3 += sum + '0';
}
}
while(len1 >= 0){
tmp1 = num1[len1 --] - '0';
sum = tmp1 + tmp;
if(sum >= 10){
tmp = 1;
num3 += sum - 10 + '0';
}else{
tmp = 0;
num3 += sum + '0';
}
}
while(len2 >= 0){
tmp2 = num2[len2 --] - '0';
sum = tmp2 + tmp;
if(sum >= 10){
tmp = 1;
num3 += sum - 10 + '0';
}else{
tmp = 0;
num3 += sum + '0';
}
}
if(tmp) num3 += tmp + '0';
reverse(num3.begin(), num3.end());
return num3;
}
};