1.题目
Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2.
Note:
The length of both num1 and num2 is < 110.
Both num1 and num2 contains only digits 0-9.
Both num1 and num2 does not contain any leading zero.
You must not use any built-in BigInteger library or convert the inputs to integer directly.
2.题意
字符串相乘
3.分析
直接将字符串各位相乘,得到的结果反转后即为所求的积
但是必须将多余的0去除
注意
v[i+j]+=(num1[m-1-i]-'0')*(num2[n-1-j]-'0')+digit;
+=符号不要写成=
nums1与nums2各元素相乘,不要写成v乘以v
去除0的时候要用while不要写成if
4.代码
class Solution {
public:
string multiply(string num1, string num2) {
const int m = num1.size();
const int n = num2.size();
vector<int> v(m + n, 0);
for(int i = 0; i < m; ++i)
{
int digit = 0;
for(int j = 0; j < n; ++j)
{
v[i + j] += (num1[m - 1 - i] - '0') * (num2[n - 1 - j] - '0') + digit;
digit = v[i + j] / 10;
v[i + j] %= 10;
}
if(digit > 0)
v[n + i] += digit;
}
while(v.size() > 1 && v.back() == 0)
v.pop_back();
string result;
for(auto it = v.rbegin(); it != v.rend(); ++it)
result += *it + '0';
return result;
}
};