本质上就是算术的一次模拟:
我们在计算的时候首先要对齐最低位,然后再逐位相加,相加过程每次只取一位相加,记录这一次的进位,加到下一次里边去。
代码如下所示:
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 计算两个数之和
* @param s string字符串 表示第一个整数
* @param t string字符串 表示第二个整数
* @return string字符串
*/
string solve(string s, string t) {
if(s=="") return t;
if(t=="") return s;
int carry=0;
//保证前面字符串长度长
if(s.length()<t.length()){
swap(s, t);
}
for(int i=s.length()-1;i>=0;i--){
int sum=s[i]-'0'+carry;
//求出对应位在较短字符串t中的位置
int j=(t.length()-s.length())+i;
if(j>=0){
sum+=t[j]-'0';
}
carry=sum/10;
sum=sum%10;
s[i]='0'+sum;
}
if(carry){
s='1'+s;
}
return s;
}
};