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) {
if (num1.size() > num2.size())
{
string temp = num2;
num2 = num1; num1 = temp;
}
string re(num1.size()+num2.size(),'0');
for (int i = num1.length()-1; i >=0; i--)
{
int n1 = num1[i] - '0';
int addi = 0; string aa;
for (int j = num2.length()-1; j >=0; j--)
{
int n2 = num2[j] - '0';
int result = n1*n2+addi;
addi = result / 10;
aa.insert(aa.begin(), result % 10 + '0');
}
if (addi>0)
aa.insert(aa.begin(), addi + '0');
int bb = re.length() - 1 - (num1.length() - 1-i);
int dd = bb - (aa.length() - 1);
int ad = 0;
for (int h =bb ; h >=dd; h--)
{
int d1 = re[h] - '0';
int d2 = aa[aa.length() - 1 - (bb - h)] - '0';
int d3 = d1 + d2+ad;
re[h] = d3 % 10+'0' ;
ad = d3 / 10;
}
if (ad > 0)
re[bb - aa.length()]++;
}
while (re[0] == '0')
{
re.erase(0, 1);
if (re.size() == 1)
return re;
}
return re;
}
};
accepted