Multiply Strings
Problem
https://leetcode.com/problems/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.
Note: You must not use any built-in BigInteger library or convert the inputs to integer directly.
Example 1:
Input: num1 = "2", num2 = "3"
Output: "6"
Example 2:
Input: num1 = "123", num2 = "456"
Output: "56088"
Constraints:
1 <= num1.length, num2.length <= 200num1andnum2consist of digits only.Both
num1andnum2do not contain any leading zero, except the number0itself.
Pattern
Math, String
Approaches
Code
def multiply(num1: str, num2: str) -> str:
"""Multiply two numbers represented as strings."""
if num1 == "0" or num2 == "0":
return "0"
n1 = len(num1)
n2 = len(num2)
result = [0] * (n1 + n2)
for i in range(n1 - 1, -1, -1):
for j in range(n2 - 1, -1, -1):
mul = int(num1[i]) * int(num2[j])
p1, p2 = i + j, i + j + 1
total = mul + result[p2]
result[p2] = total % 10
result[p1] += total // 10
start = 0
while start < len(result) and result[start] == 0:
start += 1
return "".join(str(d) for d in result[start:])
Test
>>> from multiply_strings__grade_school import multiply
>>> multiply("2", "3")
'6'
>>> multiply("123", "456")
'56088'
>>> multiply("0", "0")
'0'
>>> multiply("999", "999")
'998001'
- multiply_strings__grade_school.multiply(num1: str, num2: str) str
Multiply two numbers represented as strings.