DAY18:leetcode #43 Multiply Strings

来源:互联网 发布:淘宝网首页中年女装 编辑:程序博客网 时间:2024/06/06 05:16

Given two numbers represented as strings, return multiplication of the numbers as a string.

Note:

  • The numbers can be arbitrarily large and are non-negative.
  • Converting the input string to integer is NOT allowed.
  • You should NOT use internal library such as BigInteger.

Subscribe to see which companies asked this question

class Solution(object):    def multiply_1(self, num1, num2):        result = [0] * (len(num1)+1)        for i in range(len(num1))[::-1]:            result[i+1] += (num1[i] * num2) % 10            result[i] += (num1[i] * num2) // 10        return result                def multiply(self, num1, num2):        """        :type num1: str        :type num2: str        :rtype: str        """        num1 = list(num1)        num2 = list(num2)                for i in range(len(num1)):            num1[i] = int(num1[i])        for i in range(len(num2)):            num2[i] = int(num2[i])        data = []        for n2 in num2[::-1]:            data.append(self.multiply_1(num1,n2))        len_1 = len(num1)        len_2 = len(num2)        total_len = len_1 + len_2        result = [0] * (total_len + 1)        for i in range(len(data)):            for j in range(len_1 + 1)[::-1]:                result[len_2 - i + j] = (result[len_2 - i + j] + data[i][j])        c = 0        for i in range(total_len + 1)[::-1]:            temp = (result[i] + c) // 10            result[i] = (result[i] + c) % 10            c = temp        temp = -1        flag = True        for i in range(total_len + 1):            if flag and result[i] != 0:                temp = i                flag =False            result[i] = str(result[i])        if temp == -1:            return '0'        return ''.join(result[temp:])


0 0