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 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.
思路:首先将两个整数用0补齐到相同长度,然后逐位计算本位和、进位。注意最高位计算结束后,需要判断是否存在进位,如果存在进位,需要在结果前补1。
string addStrings(string num1, string num2) {
int sum,carry=0,digit1,digit2,i;
int len1=num1.size(),len2=num2.size();
string padding="",ans="";
if(len1>len2)
{
for(i=0;i<len1-len2;i++)padding+="0";
num2 = padding + num2;
len2=len1;
}
else if(len1<len2)
{
for(i=0;i<len2-len1;i++)padding+="0";
num1 = padding + num1;
len1=len2;
}
for(i=len1-1;i>=0;i--)
{
digit1 = num1[i]-'0';
digit2 = num2[i]-'0';
sum = digit1 + digit2 + carry;
if(sum>9)
{
carry = 1;
sum-=10;
}
else carry = 0;
ans = to_string(sum) + ans;
}
if(carry==1)ans = "1" + ans;
return ans;
}