美文网首页
43. 字符串相乘(medium)

43. 字符串相乘(medium)

作者: genggejianyi | 来源:发表于2019-05-26 15:25 被阅读0次

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
示例 1:
输入: num1 = "2", num2 = "3"
输出: "6"
示例 2:
输入: num1 = "123", num2 = "456"
输出: "56088"

  • show the code:
class Solution:
    def multiply(self,num1: str, num2: str) -> str:
        len1,len2 = len(num1),len(num2)
        nums = [0]*(len1+len2)
        for i in range(len1-1,-1,-1):
            for j in range(len2-1,-1,-1):
                nums[i+j+1] += int(num1[i])*int(num2[j])
                nums[i+j] += nums[i+j+1]//10
                nums[i+j+1] %= 10
        k = 0
        while k < len(nums) and nums[k] == 0:
            k += 1
        s = ''.join(str(_) for _ in nums[k:])
        return s if s else '0'            
  • 此题算是一道经典题,有关大数的题很常见,类似的还有大数相加,大数相乘,这些题目都是需要转化成字符串相乘或者字符串相加的运算。此题属于字符串相乘运算,我们需要模拟竖式乘法。
  • 关键就是要找出规律:num1[i] and num2[j]将位于nums[i+j+] and nums[i+j+1]上也就是说i位置和j位置对应了i+j和i+j+1位置,其次就是注意第i+j+1位保留%10的结果,但是得记得累加之前的结果,第i+j位保留//10的结果,也得记得累加之前的结果,关键体现在这三行语句中:
                nums[i+j+1] += int(num1[i])*int(num2[j])
                nums[i+j] += nums[i+j+1]//10
                nums[i+j+1] %= 10
  • 其次需要注意的是我们得到的结果是一个列表(python中字符串无法直接修改)所以我们需要将列表转换为字符串,而这个列表的长度不一定等于正确结果的长度(因为开头可能有0元素的存在)需要将列表前面的0元素去掉,此时再写一个循环,找到列表中第一个不为0元素位置索引即可。
  • 有关竖式乘法可以看下面的图片(话说外国人原来是这么做乘法的,难怪比我们算得慢,哈哈)


    竖式乘法

相关文章

  • 43. 字符串相乘(medium)

    给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示...

  • LeetCode 43. 字符串相乘 | Python

    43. 字符串相乘 题目来源:力扣(LeetCode)https://leetcode-cn.com/proble...

  • 字符串乘法

    读完本文,你可以去力扣拿下如下题目: 43.字符串相乘[https://leetcode-cn.com/probl...

  • 43.字符串相乘

    题目给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也...

  • 43. 字符串相乘

  • 43. 字符串相乘

    1、思路   两数相乘时,乘数某位与被乘数某位相乘,所产生结果的位置是有规律的。具体规律如下:  乘数 num1 ...

  • 43. 字符串相乘

    自己解法 墨迹了两晚上,才写出来的字符串相乘,虽然写得很丑,还是记下来吧,至少思路是好理解的。基本就是从个位开始乘...

  • 43.字符串相乘

    题目描述: 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们...

  • 43. 字符串相乘

    给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示...

  • 43. 字符串相乘

    #### [https://leetcode-cn.com/problems/multiply-strings]4...

网友评论

      本文标题:43. 字符串相乘(medium)

      本文链接:https://www.haomeiwen.com/subject/tgoxtctx.html