您的位置:首页 > 其它

Multiply Strings--LeetCode

2017-10-30 19:59 405 查看

1.题目

Multiply Strings

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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息