class Solution {
public:
//两个字符串相加
string SumString(string& s, string& t) {
//s -- 总
//t -- 新
string str;
int i = s.size() - 1;
int j = t.size() - 1;
int ret = 0;
while (i >= 0 || j >= 0) {
int sum = 0;
if (i >= 0) {
sum += s[i] - '0';
i--;
}
if (j >= 0) {
sum += t[j] - '0';
j--;
}
sum += ret;
str += sum % 10 + '0';
ret = sum / 10;
}
if (ret) str += ret + '0';
// s --> "99"
// t --> "990"
//9801 -->需要翻转
reverse(str.begin(), str.end());
return str;
}
string solve(string s, string t) {
if(s[0] == '0'||t[0] == '0')return "0";//如果有一个字符串为0,直接返回
// write code here
string str;//总字符串
for (int i = s.size() - 1; i >= 0; i--) {
string s1;
int ret = 0;
//用s字符串中的每一个数字字符去乘以t字符串整个字符
for (int j = t.size() - 1; j >= 0; j--) {
int sum = (t[j] - '0') * (s[i] - '0') + ret;
s1 += sum % 10 + '0';
ret = sum / 10;
}
if (ret) s1 += ret + '0';
//翻转字符串
reverse(s1.begin(), s1.end());
//进位逻辑
int cnt = s.size() - 1 - i;
while (cnt--) {
s1 += '0';
}
//第一次的字符串结果作为总字符串结果
if (i == s.size() - 1) {
str = s1;
} else {
//处理两个字符串相加的逻辑
str = SumString(str, s1);
}
}
return str;
}
};