1 声明一个数组,从后面个位开始乘 ivec[i+j+1] += (num[i]-'0')*(nums[j] - '0')
2 统一进位
3 清空左边的0
class Solution {
public:
string multiply(string num1, string num2) {
size_t size1=num1.size();
size_t size2=num2.size();
vector<int> ivec(size1+size2,0);
string res;
if(size1<=0||size2<=0){
return res;
}else if(num1=="0"||num2=="0"){
return "0";
}
for(int i=size1-1;i>=0;i--){
for(int j=size2-1;j>=0;j--){
ivec[i+j+1]+=(num1[i]-'0')*(num2[j]-'0');//这里不是等于而是+=
}
}
int carry=0;
for(int i=ivec.size()-1;i>=0;i--){
ivec[i]+=carry;
carry=ivec[i]/10;
ivec[i]=ivec[i]%10;
}
int left=0;
for(left=0;left<ivec.size();left++){
if(ivec[left]!=0){
break;
}
}
while(left<ivec.size()){
res.push_back(ivec[left]+'0');
left++;
}
return res;
}
};