# 43. Multiply Strings

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 and num2 is < 110.
  • Both num1 and num2 contain only digits 0-9.
  • Both num1 and num2 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.

# Solution

Approach 1: Step by step multiplication.

# Code (Python)

Approach 1:

# Code (C++)

Approach 1:

class Solution {
public:
    string multiply(string num1, string num2) {
        if (num1 == "0" || num2 == "0")
            return "0";
        int maxLen = num1.size() + num2.size();
        string result = string(maxLen, '0');
        for (int i = num1.size() - 1; i >= 0; --i)
        {
            int carry = 0;
            int digit1 = num1[i] - '0';
            for (int j = num2.size() - 1; j >= 0; --j)
            {
                int digit2 = num2[j] - '0';
                int k = i + j + 1;
                int existing = result[k] - '0';
                int mulRes = digit1 * digit2 + existing + carry;
                result[k] = '0' + (mulRes % 10);
                carry = mulRes / 10;
            }
            if (carry > 0)
                result[i] = '0' + carry;
        }
        if (result[0] == '0')
            result = result.substr(1, maxLen - 1);
        return result;
    }
};