需要处理进位
需要处理字符串1剩余部分
需要处理字符串2剩余部分
需要处理最后的进位
/*
* 两个指针i,j,分别从末端向前走
* sum = i+j+bit
* rest 求解除去进位的和
* bit 求解进位
*
* 注意对剩余子串的相加
* 对bit的相加
*/
#include <iostream>
#include <vector>
using namespace std;
string stringAdd(string &num1, string &num2) {
int n = num1.size();
int m = num2.size();
// 两个指针i,j,分别从末端向前走
int i = n - 1, j = m - 1;
bool bit = 0;
string res;
while (i >= 0 && j >= 0) {
// 求和
int sum = num1[i] - '0' + num2[j] - '0' + bit;
// 除去进位
int rest = sum % 10;
// 进位
bit = sum / 10;
res = to_string(rest) + res;
i--, j--;
}
// num1还剩余
while (i >= 0) {
// 求和
int sum = num1[i] - '0' + bit;
// 除去进位
int rest = sum % 10;
// 进位
bit = sum / 10;
res = to_string(rest) + res;
i--;
}
// num2还剩余
while (j >= 0) {
// 求和
int sum = num2[j] - '0' + bit;
// 除去进位
int rest = sum % 10;
// 进位
bit = sum / 10;
res = to_string(rest) + res;
j--;
}
// 最后剩下进位
if(bit) res = "1" + res;
return res;
}
int main() {
string num1 = "0";
string nums2 = "0";
cout<<stringAdd(num1, nums2)<<endl;
return 0;
}