class Solution {
int MAX=110;
public:
string multiply(string num1, string num2) {
vector<int> a(MAX);
vector<int> b(MAX);
vector<int> res(2*MAX); // 存放结果
int m=num1.size();
int n=num2.size();
// 倒序插入数组
for(int i=m-1,j=0;i>=0;i--,j++){
a[j]=num1[i]-'0';
}
for(int i=n-1,j=0;i>=0;i--,j++){
b[j]=num2[i]-'0';
}
// 计算每一位的乘积(暂时不考虑进位,下面会处理)
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
res[i+j]+=a[i]*b[j];
}
}
for(int i=0;i<m+n;i++){
if(res[i]>9){
res[i+1]+=res[i]/10;
res[i]%=10;
}
}
string ans="";
int i;
for(i=m+n;i>=0;i--){
if(res[i]!=0)
break;
}
// 输入可能是0 0,防止越界出错
if(i<0)
return "0";
for(int j=i;j>=0;j--){
ans+=to_string(res[j]);
}
return ans;
}
};