Leetcode 43. Multiply Strings
43. Multiply Strings
- Total Accepted: 72584
- Total Submissions: 292967
- Difficulty: Medium
Given two numbers represented as strings, return multiplication of the numbers as a string.
Note:
- The numbers can be arbitrarily large and are non-negative.
- Converting the input string to integer is NOT allowed.
- You should NOT use internal library such as BigInteger.
思路:模拟大数相乘,具体见代码。
代码:
1 class Solution { 2 public: 3 string multiply(string num1, string num2) { 4 int i = 0, j; 5 //去除头0 6 while (i < num1.size() && num1[i] == '0') i++; 7 if (i == num1.size()) return "0"; 8 num1 = num1.substr(i); 9 i = 0; 10 while (i < num2.size() && num2[i] == '0') i++; 11 if (i == num2.size()) return "0"; 12 num2 = num2.substr(i); 13 vector<int> nums(num1.size()+num2.size(),0); 14 for (i = num1.size() - 1; i >= 0; i--) { 15 for (j = num2.size() - 1; j >= 0; j--) { 16 int mutil = (num1[i]-'0')*(num2[j]-'0') + nums[i + j + 1]; 17 nums[i + j + 1] = mutil % 10; 18 nums[i + j] += mutil / 10;//这个可以保证不会溢出 19 } 20 } 21 string res = ""; 22 j = 0; 23 while (nums[j] == 0) j++; 24 while (j < nums.size()) res += to_string(nums[j++]); 25 return res; 26 } 27 };