题目:
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 len1 = num1.size();
int len2 = num2.size();
string result;
if(num1[0] == '0' || num2[0] == '0')
return "0";
int *num = new int[len1+len2]();
for(int i = len1 - 1 ; i >= 0 ; i--)
{
for(int j = len2 - 1 ; j >= 0 ; j--)
{
num[i+j+1] += (num1[i] - '0') * (num2[j] - '0');
}
}
for(int i = len1+len2-1 ; i >= 0 ; i--)
{
if(i > 0)
num[i-1] += num[i]/10;
num[i] %= 10;
result = char(num[i]+'0') + result;
}
delete [] num;
if(result[0] == '0')
return result.substr(1);
else
return result;
}
};