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