给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
class Solution {
public:
string addStrings(string num1, string num2) {
int Lsize = num1.size();
int Rsize = num2.size();
if(Lsize<Rsize)
{
num1.swap(num2);
swap(Lsize,Rsize);
}
string res;
res.reserve(Lsize+1);
char cRet = 0;
char cStep = 0;
for(int i = 0;i<Lsize;++i)
{
cRet = num1[Lsize-i-1] - '0' + cStep;//是=号,不是+=
cStep = 0;
if(i<Rsize)
{
cRet += num2[Rsize-i-1] - '0';//是+=,不是=号
}
if(cRet>=10)
{
cRet -= 10;
cStep = 1;
}
res += cRet + '0';
}
if(cStep)
{
res += '1';
}
reverse(res.begin(),res.end());//从右向左,最后反转
return res;
}
};