# 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;
}
};