给定两个以字符串形式表示的非负整数num1
和 num2
,返回 num1
和 num2
的乘积,它们的乘积也表示为字符串形式。
对应题目:字符串相乘
class Solution {
public:
string multiply(string a, string b) {
if(a.size()<b.size()){
return multiply(b,a);
}
if(b=="0") return "0";
int na=a.size(),nb=b.size(),ms=0;
vector<string> res;
for(int i=nb-1;i>=0;i--){
int vb=b[i]-'0',va=-1,t=0;
string ss(nb-1-i,'0');
for(int j=na-1;j>=0;j--){
va=a[j]-'0';
t+=va*vb;
ss+=char('0'+t%10);
t/=10;
}
if(t>0) ss+=char('0'+t);
if(ms<ss.size()) ms=ss.size();
res.push_back(ss);
}
string ans="";
int t=0;
for(int i=0;i<ms;i++){
for(int j=res.size()-1;j>=0;j--){
if(i>=res[j].size()) break;
t+=int(res[j][i]-'0');
}
ans=to_string(t%10)+ans;
t/=10;
}
while(t>0){
ans=to_string(t%10)+ans;
t/=10;
}
return ans;
}
};