问题描述:
Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2.
Note:
The length of both num1 and num2 is < 5100.
Both num1 and num2 contains only digits 0-9.
Both num1 and num2 does not contain any leading zero.
You must not use any built-in BigInteger library or convert the inputs to integer directly.
//时间复杂度o(n)
//从后向前遍历,两个对应字符相加,flag表示进位情况,与下一次相加一起处理
//注:1.对于位数不一样的情况采取分别处理的方式;
// 2.最后一次的进位要考虑
// 3.插入时应直接插到第0号元素的位置
string addStrings(string num1, string num2)
{
int sum = 0;
int flag = 0;
int i,j;
string res;
string r;
for(i = num1.size()-1,j = num2.size()-1; i >=0 && j >=0; i--,j--)
{
sum = num1[i]-'0'+num2[j]-'0'+flag;
flag = sum/10;
r = sum%10+'0';
res.insert(0,r);
}
for(;i>=0;i--)
{
sum = num1[i]-'0'+flag;
flag = sum/10;
r = sum%10+'0';
res.insert(0,r);
}
for(;j>=0;j--)
{
sum = +num2[j]-'0'+flag;
flag = sum/10;
r = sum%10+'0';
res.insert(0,r);
}
if(flag == 1)
{
res.insert(0,"1");
}
return res;
}