43.字符串相乘
思路:高精度乘法。需要把两个字符串num1, num2转换为vector数组n1,n2的形式。然后用vector数组res去保留结果。
class Solution {
public:
string multiply(string num1, string num2) {
vector<int > n1,n2;
for(int i=num1.size()-1;i>=0;i--){
n1.push_back(num1[i]-'0');
}
for(int i=num2.size()-1;i>=0;i--){
n2.push_back(num2[i]-'0');
}
vector<int > res;
for(int i=0;i<n2.size();i++){//用第二个字符串里的每个数去与第一个字符串里的每个数相乘
int t=0;
for(int j=0;j<n1.size();j++){
t+=n2[i]*n1[j];
if(i+j<res.size()){
t+=res[j+i];
res[j+i]=t%10;
}else{
res.push_back(t%10);
}
t/=10;
}
int ct=0;
while(t){
if(i+n1.size()+ct<res.size()){
res[i+n1.size()+ct]=t%10;
}else{
res.push_back(t%10);
}
ct++;
t/=10;
}
}
string s="";
int flag=0;
for(int i=res.size()-1;i>=0;i--){
if(!flag&&res[i]==0&&i!=0) continue;
flag=1;
s=s+to_string(res[i]);
}
return s;
}
};