[Math]043 Multiply Strings

  • 分类:Math

  • 考察知识点:Math

  • 最优解时间复杂度:O(n*m)(大佬的) O(n)(我的)

43. Multiply Strings

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

Example 1:

Input: num1 = "2", num2 = "3"
Output: "6"

Example 2:

Input: num1 = "123", num2 = "456"
Output: "56088"

Note:

  1. The length of both num1 and num2 is < 110.
  2. Both num1 and num2 contain only digits 0-9.
  3. Both num1 and num2 do not contain any leading zero, except the number 0 itself.
  4. You must not use any built-in BigInteger library or convert the inputs to integer directly.

代码:

大佬高票方法:

class Solution:
    def multiply(self, num1, num2):
        """
        :type num1: str
        :type num2: str
        :rtype: str
        """
        if num1=="" or num2=="":
            return "0"
        
        res=[0]*(len(num1)+len(num2))
        for i in range(len(num1)-1,-1,-1):
            for j in range(len(num2)-1,-1,-1):
                prod=int(num1[i])*int(num2[j])
                prod+=res[i+j+1]
                res[i+j+1]=prod%10
                res[i+j]+=prod//10
        start=False
        str_num=""
        
        for r in res:
            if r:
                start=True                
            if start:
                str_num+=str(r)
        if str_num=="":
            return "0"
                
        return str_num

我的方法:

class Solution:
    def multiply(self, num1, num2):
        """
        :type num1: str
        :type num2: str
        :rtype: str
        """
        if num1=="" or num2=="":
            return "0"
        
        num_1,num_2=0,0
        for i in range(len(num1)):
            num_1=num_1*10+int(num1[i])
            
        for i in range(len(num2)):
            num_2=num_2*10+int(num2[i])
            
        res=num_1*num_2
        res_str=""
        while res:
            res_str=str(res%10)+res_str
            res=res//10
            
        if res_str=="":
            return "0"
        
        return res_str

讨论:

1.大佬用的Java,然后思想是用数组,然后还原
2.我自己是先转成int,然后相乘,最后转换回来,结果发现还是我的快!So 相信自己┗|`O′|┛ 嗷~~

我的快!相信自己┗|`O′|┛ 嗷~~

你可能感兴趣的:([Math]043 Multiply Strings)