Multiply Strings
本题需要注意char型超过10的时候不为10,因此可以先转化为int型运算,运算原理同乘法相同
AC代码:
class Solution {
public:
string reverse(string s){
for(int i=0;i<s.size()/2;i++){
int temp=s[i];
s[i]=s[s.size()-i-1];
s[s.size()-i-1]=temp;
}
return s;
}
string multiply(string num1, string num2) {
int m=num1.size(),n=num2.size();
string res;int *s=new int[m+n];
for(int i=0;i<m+n;i++)
s[i]=0;
num1=reverse(num1);num2=reverse(num2);
for(int i=0;i<m;i++)
for(int j=0;j<n;j++){
int a=(num1[i]-'0')*(num2[j]-'0');
//char超过10的时候不为10
s[i+j+1]+=(s[i+j]+a)/10;
s[i+j]=(s[i+j]+a)%10;
}
int i=m+n-1;
while(i>0&&s[i]==0){i--;}
for(int j=i;j>=0;j--)
res+=s[j]+'0';
return res;
}
};