Sunday, August 16, 2015

Leetcode 43. Multiply Strings

https://leetcode.com/problems/multiply-strings/

One line slick solution:
        return str(long(num1) * long(num2))
Run Time is 52 ms.

Normal solution: reverse two strings to make it more convenient, also care about carry. If use insert method to construct result, do not forget to remove '0's in the front.

Solution:
# T:O(m*n) S:O(m+n)
class Solution:
    # @param num1, a string
    # @param num2, a string
    # @return a string
    def multiply(self, num1, num2):
        num1, num2 = num1[::-1], num2[::-1]
        result = [0 for i in xrange(len(num1) + len(num2))]
        for i in xrange(len(num1)):
            for j in xrange(len(num2)):
                result[i + j] += int(num1[i]) * int(num2[j])
                
        carry, num3 = 0, []
        for digit in result:
            sum = carry + digit
            carry = sum / 10
            num3.insert(0, str(sum % 10))
            
        while len(num3) > 1 and num3[0] == "0":
            del num3[0]
            
        return ''.join(num3)
Run Time: 368 ms

No comments:

Post a Comment