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.
solution:按位做乘法,然后相加得到最后结果,注意下标的规律和进位即可。
class Solution {
public:
string multiply(string num1, string num2) {
// Note: The Solution object is instantiated only once and is reused by each test case.
if(num1 == "" || num1 == "0")return "0";
if(num2 == "" || num2 == "0")return "0";
int len1 = num1.size();
int len2 = num2.size();
vector<int>res(len1+len2,0);
for(int i1 = 0; i1 < num1.size(); i1++)
{
for(int i2 = 0; i2 < num2.size(); i2++)
res[ i1+i2+1 ] += (num1[i1]-'0') * (num2[i2] - '0');
}
int carry = 0;
string result = "";
for(int i = res.size()-1; i >=0; i--)
{
res[i] += carry;
carry = res[i] / 10;
res[i] = res[i] % 10;
char ch = '0' + res[i];
result = ch + result;
}
if(result.at(0) == '0')return result.substr(1);
return result;
}
};