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
is < 110. - 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, 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
大整数乘法