【leetcode】(python) 43. Multiply Strings字符串乘法

Description

  1. Multiply Strings Medium

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

Example

  • Example 1:

    Input: num1 = “2”, num2 = “3”
    Output: “6”

  • Example 2:

    Input: num1 = “123”, num2 = “456”
    Output: “56088”

  • Note:

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

题意

将两个非负整数数字字符串相乘,以字符串的形式返回其乘积
要求:

  1. 两个字符串长度都小于110
  2. 字符串只包含数字0到9
  3. num1和num2都不包含任何前导零,除了数字0本身
  4. 不得使用任何内置BigInteger库或直接将输入转换为整数

思路1

其实这题看懂了意思,直接用int和str相互转换即可。

code

class Solution:
    def multiply(self, num1: str, num2: str) -> str:
        if len(num1)>110 or len(num2)>110:
            return 
        if num1.isdigit() and num2.isdigit():
            return str(int(num1) * int(num2))

思路2

按照小学学乘法列竖式计算,注意乘法之间的进位和为0的情况。
在这里插入图片描述

code

class Solution:
    def multiply(self, num1: str, num2: str) -> str:
        res = [0] * (len(num1) + len(num2))
        for i in range(len(num1)-1, -1, -1):
            for j in range(len(num2)-1, -1, -1):
                temp = int(num1[i]) * int(num2[j])
                res[i+j+1] += temp % 10
                res[i+j] += temp // 10 
        for i in range(len(res)-1, -1, -1):
            if int(res[i]) > 9:
                res[i-1] += res[i] // 10
                res[i] = res[i] % 10
        res = ''.join([str(s) for s in res]).lstrip('0')
        if not res:
            return '0'
        return res

今天端午收假,实验室没人,一个人好自在。
实验室的人越来越少了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值