def multiply(self, num1, num2):
        result = []

        # pre processing
        if len(num1) < len(num2):  # order them first
            num1, num2 = num2, num1

        num2 = num2[::-1]  # reverse them first
        num1 = num1[::-1]

        # multiply by 1 digit at a time
        for i in range(len(num2)):
            result.append(self.multiply_1_digit(num2[i], num1))

        # add the temporary results up
        lst = self.add_list(result)


        # post processing
        lst.reverse()  # reverse back
        result = "".join(str(item) for item in lst).lstrip("0")
        if not result:
            return "0"
        return result
Google Phone Interview Question, 20 Sep 2013
dataset/ETHPy150Open algorhythms/LeetCode/042 Multiply Strings.py/Solution.multiply