class Solution {
public:
string solve(string s, string t) {
vector<int> vs;
vector<int> vt; //把字符串整体转换成数组处理
//字符串转数字stoi;字符转数字int(c - '0')
//数字转字符串to_string();数字转字符char(c + '0');
for(int i=s.size()-1; i>=0; i--){
vs.push_back(s[i] - '0');
}
for(int i=t.size()-1; i>=0;i--){
vt.push_back(t[i] - '0'); //数字字符和数字本身不对应,直接转换会按照asc码转换,char类型转换成int
}
vector<int> ans(s.size()+t.size()); //开辟空间
for(int i=0; i<vs.size(); i++){ //和手动乘法一样的,先都乘,最后相加的时候处理进位
for(int j=0; j<vt.size(); j++){
int res = vs[i] * vt[j];
ans[i+j] += res;
}
}
int jin = 0;
for(int i=0; i<ans.size(); i++){ //处理进位,注意覆盖问题
int temp = ans[i]+jin;
ans[i] = temp%10;
jin = temp/10;
}
if(jin)ans.push_back(jin);
while(ans.back() == 0 && ans.size()>1){ //处理前导0,最少有一位数
ans.pop_back();
}
string j;
for(int i=ans.size()-1; i>=0; i--){
j+= (ans[i] + '0'); //转变方向
}
return j;
}
};