Given two numbers represented as strings, return multiplication of the numbers as a string.
Note: The numbers can be arbitrarily large and are non-negative.
Difficulty:Medium
string multiply(string num1, string num2) {
string s1, s2, ans;
if(num1=="0"||num2=="0")
return "0";
if(num1.length()>=num2.length())
{
s1 = num1;
s2 = num2;
}
else{
s2 = num1;
s1 = num2;
}
int len1 = s1.length();
int len2 = s2.length();
int array1[len1+len2+1];
memset(array1,0,sizeof(array1));
for(int i = len2-1;i>=0;i--)
{
for(int j = len1-1;j>=0;j--)
{
int a,b;
a = s1[j] - '0';
a = a*b;
array1[len1+len2-2-i-j] = array1[len1+len2-2-i-j] + a;
}
}
int carry = 0,len;
for(int i = 0;i<len1+len2-1;i++)
{
array1[i] = array1[i]+carry;
carry = array1[i]/10;
array1[i] = array1[i]%10;
}
if(carry>0){
array1[len1+len2-1] = carry;
len = len1+len2;
}
else
len = len1+len2-1;
for(int i = 0;i<len;i++){
char b = array1[len-1-i] + 48;
ans.push_back(b);
}
return ans;
}