给定两个字符串形式的非负整数 num1
和num2
,计算它们的和。
注意:
num1
和num2
的长度都小于 5100.num1
和num2
都只包含数字0-9
.num1
和num2
都不包含任何前导零。- 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
模拟竖式加法,注意这里的简洁实现方法,最后涉及到一个字符串反转
class Solution {
public:
void reverse(string &s){
int left=0,right=s.size()-1;
while(left<right)
swap(s[left++],s[right--]);
}
string addStrings(string num1, string num2) {
string res="";
int carry =0, i = num1.size()-1, j=num2.size()-1;
while(i>=0 || j>=0 ||carry!=0){
if(i>=0)
carry+=num1[i--]-'0';
if(j>=0)
carry+=num2[j--]-'0';
res+= to_string(carry%10);
carry/=10;
}
reverse(res);
return res;
}
};