from collections import defaultdictclass Solution: def multiply(self, num1: str, num2: str) -> str: res = 0 for i in range(1, len(num1) + 1): for j in range(1, len(num2) + 1): res += int(num1[-i]) * int(num2[-j]) * 10 ** (i + j - 2) return str(res) def multiply(self, num1: str, num2: str) -> str: res = 0 for (i, n1) in enumerate(map(int, num1[::-1])): for (j, n2) in enumerate(map(int, num2[::-1])): res += n1 * n2 * 10 ** (i + j) return str(res) def multiply(self, num1: str, num2: str) -> str: tmp = defaultdict(lambda: 0) for (i, n1) in enumerate(map(int, num1[::-1])): for (j, n2) in enumerate(map(int, num2[::-1])): tmp[i + j] += n1 * n2 return str(sum(num * 10 ** k for k, num in tmp.items()))if __name__ == '__main__': print(Solution().multiply("2", "3")) print(Solution().multiply("123", "456"))