以前写过,但是以前写的代码太丑了呜呜呜。
代码比较简单,所以没有注释也没有解释。
class Solution {
public:
string multiply(string num1, string num2) {
if(num1[0]=='0'||num2[0]=='0') return "0";
int len1=num1.size(),len2=num2.size();
string ans="";
for(int i=len1-1;i>=0;i--)
{
int x=num1[i]-'0';
string now="";
for(int j=len1-1;j>i;j--)
now+='0';
int add=0;
for(int j=len2-1;j>=0;j--)
{
int y=num2.at(j)-'0';
int sum=x*y+add;
now+=(sum%10+'0');
add=sum/10;
}
while(add)
{
now+=(add%10+'0');
add/=10;
}
reverse(now.begin(),now.end());
ans= StringSum(ans,now);
}
return ans;
}
string StringSum(string &s1,string &s2)
{
int n=s1.size(),m=s2.size();
string res;
int add=0;
int i=n-1,j=m-1;
while(i>=0||j>=0||add!=0)
{
int x= i>=0 ? (s1[i]-'0') : 0;
int y= j>=0 ? (s2[j]-'0') : 0;
int sum=x+y+add;
res+=(sum%10+'0');
add=sum/10;
i--;j--;
}
reverse(res.begin(),res.end());
return res;
}
};
|