Leetcode||43. Multiply Strings

来源:互联网 发布:鲅鱼圈网络维护 编辑:程序博客网 时间:2024/06/10 20:29

Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2.

Note:

  1. The length of both num1 and num2 is < 110.
  2. Both num1 and num2 contains only digits 0-9.
  3. Both num1 and num2 does not contain any leading zero.
  4. You must not use any built-in BigInteger library or convert the inputs to integer directly.
大数相乘,根据小学的做法,逐个相乘,先累加到相应位置上,然后对逐位乘的结果按位从低位到高位取模,进位

class Solution(object):    def multiply(self, num1, num2):        """        :type num1: str        :type num2: str        :rtype: str        """        size1 = len(num1);size2 = len(num2)        if size1 <= 5 and size2 <= 5:            tmp = int(num1) * int(num2)            return str(tmp)        num1 = num1[::-1];num2 = num2[::-1]        array = [0 for i in range(len(num1) + len(num2))]        for i in range(len(num1)):            for j in range(len(num2)):                array[i + j] += int(num1[i]) * int(num2[j])        ans = []        for i in range(len(array)):            digit = array[i] % 10            carry = array[i] / 10            if i < len(array) - 1:                array[i + 1] += carry            ans.insert(0,str(digit))        while ans[0] == '0' and len(ans) > 1:            del ans[0]        return ''.join(ans)