class Solution {
public:
//力扣415字符串相加
string addStrings(string num1, string num2) {
int n=num1.size();
int m=num2.size();
int i=n-1;
int j=m-1;
string str;
int carry=0;
while(i>=0||j>=0){
int n1=i>=0?num1[i]-'0':0;
int n2=j>=0?num2[j]-'0':0;
int res=n1+n2+carry;
str+=(char)(res%10+'0');
carry=res/10;
i--;
j--;
}
if(carry!=0) str+=(char)(carry+'0');
reverse(str.begin(),str.end());
return str;
}
//字符串相乘
string multiply(string num1, string num2) {
if(num1=="0"||num2=="0")
return "0";
int n=num1.size();
int m=num2.size();
int i=n-1;
// int j=m-1;
vector<string> str(n);
while(i>=0){
int carry=0;
int j=m-1;
int n1=num1[i]-'0';
// str[i].resize(m);
while(j>=0){
int n2=num2[j]-'0';
int res=n1*n2+carry;
str[i]+=(char)(res%10+'0');
carry=res/10;
j--;
}
if(carry!=0)
str[i]+=(char)(carry+'0');
reverse(str[i].begin(),str[i].end());
int zeronum=n-i;
while(--zeronum>0) str[i]+='0';
// cout<<str[i]<<endl;
i--;
}
string str_final=str[0];
for(i=1;i<n;i++)
str_final=addStrings(str_final,str[i]);
return str_final;
}
};
43 字符串相乘
猜你喜欢
转载自blog.csdn.net/qq_38662930/article/details/107173757
今日推荐
周排行