凡科的网站怎么仿,记事本怎样做网站,中科建声公司简介,三个字公司名字给定两个以字符串形式表示的非负整数 num1 和 num2 #xff0c;返回 num1 和 num2 的乘积#xff0c;它们的乘积也表示为字符串形式。示例 1:输入: num1 2, num2 3输出: 6示例 2:输入: num1 123, num2 456返回 num1 和 num2 的乘积它们的乘积也表示为字符串形式。示例 1:输入: num1 2, num2 3输出: 6示例 2:输入: num1 123, num2 456输出: 56088说明num1 和 num2 的长度小于110。num1 和 num2 只包含数字 0-9 。num1 和 num2 均不以零开头除非是数字 0 本身。不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。从题目要求来看应该是让我们实现一个比较省内存的大数乘法先分享几个我在discuss中发现的不太切合题意的解法class Solution:def multiply(self, num1, num2)::type num1: str:type num2: str:rtype: strreturn str(eval(num1*num2))这个可以说是个毫无技术含量的解法如果面试的时候掏出这种解法八成是跪了。还有很多人使用了以下的解法。class Solution:def multiply(self, num1, num2)::type num1: str:type num2: str:rtype: strdict {0:0, 1:1, 2:2, 3:3, 4:4, 5:5, 6:6, 7:7, 8:8, 9:9}if (num10 or num20):return 0n1 0n2 0for c in num1:val dict[c]n1 n1*10 valfor s in num2:val dict[s]n2 n2*10 valresult n1 * n2;return str(result)这种解法我觉得还是没有切合题意将注意力放在的字符串转数字上乘法还是使用的*。题目要求不能将输入直接转成数字类型解体人自己实现了int方法完成了字符串的转换好像是符合要求但有投机取巧的感觉。我来分享一下我的解法思路很简单也很好理解当我们徒手计算222*11时我们怎么计算呢肯定是分解成2222220来计算的那么我们就可以使用一个一维列表来记录计算结果11分解成101第一轮计算列表的结果为[0, 2, 2, 2]第二轮计算后变为[2, 22, 22, 2]计算结束。如果需要进位的话进位的计算放到最后一步。class Solution(object):def multiply(self, num1, num2)::type num1: str:type num2: str:rtype: strif num1 0 or num2 0:return 0num1 num1[::-1]num2 num2[::-1]str_list [0 for _ in range(len(num1)len(num2))]for i in range(len(num1)):for j in range(len(num2)):str_list[ij] (int(num1[i])*int(num2[j]))result up 0for i in str_list:now i upcur now % 10up now / 10result str(cur)begin 0result result[::-1]for i in result:if i 0:begin 1else:breakreturn result[begin:]本文标题: python leetcode 字符串相乘实例详解本文地址: http://www.cppcns.com/jiaoben/python/238863.html