题目
LeetCode:415. 字符串相加
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
代码
class Solution {
public:
string addStrings(string num1, string num2) {
int i=num1.size()-1;
int j=num2.size()-1;
string res;
int carry=0;
while(i>=0&&j>=0)
{
int sum=num1[i--]-'0'+num2[j--]-'0'+carry;
carry=sum/10;
res.push_back(sum%10+'0');
}
while(i>=0)
{
int sum=num1[i--]-'0'+carry;
carry=sum/10;
res.push_back(sum%10+'0');
}
while(j>=0)
{
int sum=num2[j--]-'0'+carry;
carry=sum/10;
res.push_back(sum%10+'0');
}
if(carry==1)
{
res.push_back('1');
}
reverse(res.begin(),res.end());
return res;
}
};
思路
和之前有一道求二进制数的和解法差不多。每一位相加,设置一个进位位,满10就进,用好/和%。最后在判断最前面是不是有进位。