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.
class Solution {
public:
string multiply(string num1, string num2)
{
int n1 = num1.size();
int n2 = num2.size();
vector<int> ans(n1+n2+1, 0);
for(int i=n1-1; i>=0; --i)
{
for(int j=n2-1; j>=0; --j)
{
ans[n1+n2-i-j-2] += (num1[i] - '0') * (num2[j] -'0');
}
}
int c = 0;
int i = 0;
while(i < n1 + n2)
{
ans[i] += c;
c = ans[i] / 10;
ans[i] %= 10;
++i;
}
i = n1 + n2;
while(ans[i] == 0)
--i;
stringstream sin;
while(i >= 0)
{
sin << ans[i];
--i;
}
return sin.str().size() == 0 ? "0" : sin.str();
}
};