问题描述
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
- num1 和num2 的长度都小于 5100.
- num1 和num2 都只包含数字 0-9.
- num1 和num2 都不包含任何前导零。
- 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-strings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
执行结果
代码描述
思路:两个字符串,从末尾倒着扫描,每一位进行相加,并将字符通过ASCII 码转成整数,while循环中,只要有一个还不为0,就继续计算,直到全部完成计算。最后对字符串取反。
class Solution {
public:
string addStrings(string num1, string num2) {
if(num1.size() == 0) return num2;
if(num2.size() == 0) return num1;
int cur = 0, i = num1.size()-1, j = num2.size()-1;
string str;
while(i >= 0 || j >= 0 || cur != 0)
{
if(i >= 0)
cur += num1[i--] - '0';
if(j >= 0)
cur += num2[j--] - '0';
str += to_string(cur%10);
cur /= 10;
}
reverse(str.begin(), str.end());
return str;
}
};