1. 程式人生 > >19.2.4 [LeetCode 43] Multiply Strings

19.2.4 [LeetCode 43] Multiply Strings

cli lead output direct exce begin its note alt

Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2, also represented as a string.

Example 1:

Input: num1 = "2", num2 = "3"
Output: "6"

Example 2:

Input: num1 = "123", num2 = "456"
Output: "56088"

Note:

  1. The length of both num1 and num2
    is < 110.
  2. Both num1 and num2 contain only digits 0-9.
  3. Both num1 and num2 do not contain any leading zero, except the number 0 itself.
  4. You must not use any built-in BigInteger library or convert the inputs to integer directly.
技術分享圖片
 1 class Solution {
 2 public:
 3     string multiply(string num1, string
num2) { 4 reverse(num1.begin(), num1.end()); 5 reverse(num2.begin(), num2.end()); 6 int nn[250] = { 0 }, maxl = 0; 7 int l1 = num1.length(), l2 = num2.length(); 8 for(int i=0;i<l1;i++) 9 for (int j = 0; j < l2; j++) { 10 nn[i + j] += (num1[i] -
0)*(num2[j] - 0); 11 int tmp = i + j; 12 while (nn[tmp] > 9) { 13 nn[tmp + 1] += nn[tmp] / 10; 14 nn[tmp] %= 10; 15 tmp++; 16 } 17 if (nn[tmp] == 0)continue; 18 maxl = max(tmp, maxl); 19 } 20 string ans = ""; 21 for (int i = maxl; i >= 0; i--) { 22 char ch = nn[i] + 0; 23 ans += ch; 24 } 25 return ans; 26 } 27 };
View Code

大整數乘法

19.2.4 [LeetCode 43] Multiply Strings