两数相乘
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。原题链接
class Solution {
public:
string multiply(string num1, string num2) {
if(num1=="0"||num2=="0") return "0";
int len1=num1.size(),len2=num2.size();
int res[len1+len2];//两数相乘长度为m+n;
memset(res,0,sizeof res);
for(int i=len1-1;i>=0;i--){
for(int j=len2-1;j>=0;j--){
int a=num1[i]-'0',b=num2[j]-'0';
res[i+j+1]+=a*b;
}
}
for(int i=len1+len2-1;i>=0;i--){
if(res[i]>=10) {
int c=res[i]/10;
res[i]%=10;
res[i-1]+=c;
}
}
string str;
int tp=0;
while(tp<len1+len2&&res[tp]==0) tp++;
for(;tp<len1+len2;tp++){
str+=to_string(res[tp]);
}
return str;
}
};