不难,不管是数组,还是字符串,就用这个模板,不用考虑最后的进位什么的,也不用考虑越界什么的。
但是sum是%10得来的,carry是/10得来的别搞反了。
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 计算两个数之和
* @param s string字符串 表示第一个整数
* @param t string字符串 表示第二个整数
* @return string字符串
*/
string solve(string s, string t) {
// write code here
//先reverse再操作
reverse(s.begin(),s.end());
reverse(t.begin(),t.end());
int sum = 0, carry = 0;
int i = 0, j = 0;
int a = 0,b = 0;
string res;
while(i < s.length() || j < t.length() || carry != 0){
a = i >= s.length() ? 0 : (s[i++]-'0');
b = j >= t.length() ? 0 : (t[j++]-'0');
sum = (a+b+carry)%10;
carry = (a+b+carry)/10;
res += (sum+'0');
}
reverse(res.begin(),res.end());
return res;
}
};