一、题目描述
给定两个字符串形式的非负整数num1和num2,计算它们的和。
注意:
- num1和num2的长度都小于5100。
- num1和num2都只包含数字0-9。
- num1和num2都不包含任何前导零。
- 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
二、题解
思路:
本题实质是要实现竖式加法,与 2.两数相加 相似。
代码:
class Solution {
public:
string addStrings(string num1, string num2) {
string ret;
int i = int(num1.length()) - 1;
int j = int(num2.length()) - 1;
int k = 0;
int carry = 0;
while (i >= 0 || j >= 0)
{
int val1 = i < 0 ? 0 : (num1[i] - '0');
int val2 = j < 0 ? 0 : (num2[j] - '0');
int sum = val1 + val2 + carry;
ret += ('0' + sum % 10);
carry = sum / 10;
i--; j--; k++;
}
if (carry)
ret += '1';
reverse(ret.begin(), ret.end());
return ret;
}
};