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.
- Converting the input string to integer is NOT allowed.
- You should NOT use internal library such as BigInteger.
class Solution
{
public:
string multiply(string num1, string num2)
{
vector<int> vi(num1.size() + num2.size(), 0);
for(int i = 0; i < num1.size(); ++ i)
for(int j = 0; j < num2.size(); ++ j)
vi[i + j] += (num1[num1.size() - i - 1] - '0') * (num2[num2.size() - j- 1] - '0');
for(int i = 0, c = 0; i < vi.size(); ++ i)
{
int num = vi[i] + c;
vi[i] = num % 10;
c = num / 10;
}
string s = "";
int i = vi.size();
while(-- i >= 0 && vi[i] == 0);
if(i < 0)
s = "0";
else
for( ; i >= 0; -- i)
s += vi[i] + '0';
return s;
}
};