43. Multiply Strings

来源:互联网 发布:mac mysql怎么用 编辑:程序博客网 时间:2024/06/05 01:59

Given two non-negative integers num1 and num2 represented as strings, return the product ofnum1 and num2.

Note:

  1. The length of both num1 and num2 is < 110.
  2. Both num1 and num2 contains only digits 0-9.
  3. Both num1 and num2 does not contain any leading zero.
  4. You must not use any built-in BigInteger library or convert the inputs to integer directly.


求两个字符串表示的数相乘的结果,以字符串形式表示。和多项式的相乘类似,结果res的第n位是所有符合i+j=n的第i和j项相乘得到的,因为是十进制,所以取mod 10的结果,多出的部分进位。代码如下:


class Solution{public:string multiply(string num1, string num2){int m = num1.size(), n = num2.size();if(m == 0 || n == 0) return 0;string res(m + n, '0');reverse(num1.begin(), num1.end());reverse(num2.begin(), num2.end());for(int i = 0; i < m; ++i){int r = 0;for(int j = 0; j < n; ++j){int tmp = (res[i + j] - '0') + (num1[i] - '0') * (num2[j] - '0') + r;res[i + j] = tmp % 10 + '0';r = tmp / 10;}res[i + n] += r;}reverse(res.begin(), res.end());size_t pos = res.find_first_not_of("0");if(pos != string::npos){return res.substr(pos);}return "0";}};


0 0
原创粉丝点击