19.2.4 [LeetCode 43] Multiply Strings
阿新 • • 發佈:2019-02-04
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:
- The length of both
num1
andnum2
- Both
num1
andnum2
contain only digits0-9
. - Both
num1
andnum2
do not contain any leading zero, except the number 0 itself. - 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, stringView Codenum2) { 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 };
大整數乘法
19.2.4 [LeetCode 43] Multiply Strings