Multiply Strings
From LeetCode
problem description / no solution provided
Solution in Python3
class Solution(object):
    def multiply(self, num1, num2):
        """
        :type num1: str
        :type num2: str
        :rtype: str
        """
        l1, l2 = len(num1), len(num2)
        lp = l1 + l2   
        product = [0] * lp  # product[0] for possible carry
        for i in range(l1):
            for j in range(l2):
                product[i + j + 1] += int(num1[i]) * int(num2[j])
        for i in reversed(range(lp)):    
            product[i - 1] += product[i] // 10
            product[i] %= 10
        while len(product) > 1 and product[0] == 0:
            product.pop(0)
        return "".join(map(str, product))
Time Complexity
\(O(l_1 l_2)\), where \(l_1\) and \(l_2\) are the length of num1 and num2, respectively.
Variants
return str(int(num1) * int(num2))
Use int or eval is cheating, but LeetCode will not prevent you get following results
| Solution | Runtime (ms) | Beat % | 
|---|---|---|
| our complicated one | 164 | 52.92 | 
| eval() | 100 | 60.95 | 
| int() | 40 | 100.00 | 
It beats everyone.
Comments