描述
以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。
数据范围:s.length,t.length≤100000s.length,t.length≤100000,字符串仅由'0'~‘9’构成
要求:时间复杂度 O(n)O(n)
示例1
输入:
"1","99"
返回值:
"100"
说明:
1+99=100
class Solution {
public:
string solve(string s, string t) {
// write code here
//若其中一个为空,返回另一个
if(s.empty())return t;
if(t.empty())return s;
//让s较长 t较短
if(s.length()<t.length())swap(s,t);
//进位标志
int carry=0;
//从后往前遍历
for(int i=s.length()-1;i>=0;i--){
//转int加上进位
int temp=s[i]-'0'+carry;
//转较短的字符串相应的从后往前的下标
int j = i - s.length() + t.length();//省去了一个j--
//如果较短字符串还有
if(j >= 0)
//转数组相加
temp += t[j] - '0';
//取进位
carry = temp / 10;
//去十位
temp = temp % 10;
//修改结果
s[i] = temp + '0';
}
//最后的进位
if(carry == 1)
s = '1' + s;
return s;
}
};
总结:注意思想,按照加运算规则,-'0'string[i]变成int