题目描述:
给定两个字符串形式的非负整数 num1
和num2
,计算它们的和。
注意:
num1
和num2
的长度都小于 5100.num1
和num2
都只包含数字0-9
.num1
和num2
都不包含任何前导零。- 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
解题思路:
加法器,需要注意进位的。其他的按照对应位相加。
AC代码:
class Solution {
public:
string addStrings(string num1, string num2)
{
reverse(num1.begin(), num1.end());
reverse(num2.begin(), num2.end());
char carry = 0;
string res;
for (int i = 0; i < max(num1.size(), num2.size()); i++)
{
if (i >= num1.size())
{
if ((num2[i] + carry) > '9')
{
res.push_back(num2[i] + carry-10);
carry = 1;
}
else
{
res.push_back(num2[i] + carry);
carry = 0;
}
}
else if (i >= num2.size())
{
if ((num1[i] + carry) > '9')
{
res.push_back(num1[i] + carry - 10);
carry = 1;
}
else
{
res.push_back(num1[i] + carry);
carry = 0;
}
}
else
{
if ((num1[i] - '0') + (num2[i] - '0')+carry > 9)
{
res.push_back(((num1[i] - '0') + (num2[i] - '0') + carry-10)+'0');
carry = 1;
}
else
{
res.push_back((num1[i] - '0') + (num2[i] - '0') + carry + '0');
carry = 0;
}
}
}
if (carry == 1)
res.push_back('1');
reverse(res.begin(), res.end());
return res;
}
};