43 - Multiply Strings
JAVA
class Solution { public String multiply(String num1, String num2) { if ("0".equals(num1) || "0".equals(num2)) { return "0"; } int m = num1.length(), n = num2.length(); int[] arr = new int[m + n]; for (int i = m - 1; i >= 0; --i) { int a = num1.charAt(i) - '0'; for (int j = n - 1; j >= 0; --j) { int b = num2.charAt(j) - '0'; arr[i + j + 1] += a * b; } } for (int i = arr.length - 1; i > 0; --i) { arr[i - 1] += arr[i] / 10; arr[i] %= 10; } int i = arr[0] == 0 ? 1 : 0; StringBuilder ans = new StringBuilder(); for (; i < arr.length; ++i) { ans.append(arr[i]); } return ans.toString(); } }
C++
class Solution { public: string multiply(string num1, string num2) { if (num1 == "0" || num2 == "0") { return "0"; } int m = num1.size(), n = num2.size(); vector<int> arr(m + n); for (int i = m - 1; i >= 0; --i) { int a = num1[i] - '0'; for (int j = n - 1; j >= 0; --j) { int b = num2[j] - '0'; arr[i + j + 1] += a * b; } } for (int i = arr.size() - 1; i; --i) { arr[i - 1] += arr[i] / 10; arr[i] %= 10; } int i = arr[0] ? 0 : 1; string ans; for (; i < arr.size(); ++i) { ans += '0' + arr[i]; } return ans; } };
Comments
Post a Comment