描述
给出两个字符串表示的大整数,求和
解决
模拟题,注意进位即可。
class Solution {
public:
string addStrings(string num1, string num2) {
int i1 = num1.size() - 1;
int i2 = num2.size() - 1;
string res;
//reverse(num1.begin(), num1.end());
//reverse(num2.begin(), num2.end());
//int i1 = length1, i2 = 0;
int t = 0, carry = 0, cnt = 0;
while ((i1 >= 0 || i2 >= 0) || carry)
{
if(i1 >= 0 && i2 >= 0)
{
t = num1[i1] -'0' + num2[i2] - '0' + carry;
if (t <= 9)
{
res += t + '0';
carry = 0;
cnt++;
}
else
{
res += (t - 10) + '0';
carry = 1;
cnt++;
}
--i1, --i2;
continue;
}
else if (i1 >= 0)
{
t = num1[i1] - '0' + carry;
if (t <= 9)
{
res += t + '0';
carry = 0;
cnt++;
}
else
{
res += (t - 10) + '0';
carry = 1;
cnt++;
}
--i1;
continue;
}
else if (i2 >= 0)
{
t = num2[i2] - '0' + carry;
if (t <= 9)
{
res += t + '0';
carry = 0;
cnt++;
}
else
{
res += (t - 10) + '0';
carry = 1;
cnt++;
}
--i2;
continue;
}
res += carry + '0';
carry = 0;
++cnt;
}
cout << res << endl;
reverse(res.begin(), res.begin() + cnt);
return string(res.begin(), res.begin() + cnt);
}
};