题目描述: 字符串相加
给定两个字符串形式的非负整数 num1
和num2
,计算它们的和。
注意:
num1
和num2
的长度都小于 5100.num1
和num2
都只包含数字0-9
.num1
和num2
都不包含任何前导零。- 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
代码:
class Solution {
public:
string addStrings(string num1, string num2) {
string ans;
reverse(num1.begin(), num1.end());
reverse(num2.begin(), num2.end());
if(num1.length() < num2.length()) swap(num1, num2);
int i, c = 0, t;
for(i = 0;i < num2.length(); i ++){
if((t=num1[i]+num2[i]-'0'-'0'+c) > 9) c = 1;
else c = 0;
t %= 10;
ans += to_string(t);
}
while(i < num1.length()){
if((t=num1[i]-'0'+c) > 9) {
c = 1;
ans += "0";
}
else {
c = 0;
ans += to_string(t);
}
i ++;
}
if(c == 1) ans += "1";
reverse(ans.begin(), ans.end());
return ans;
}
};