Leetcode练习(Python):字符串类:第43题:字符串相乘:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。


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

说明:

num1 和 num2 的长度小于110。
num1 和 num2 只包含数字 0-9。
num1 和 num2 均不以零开头,除非是数字 0 本身。
不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。

思路:

模拟乘法计算的过程来实现。

程序:

class Solution:
    def multiply(self, num1: str, num2: str) -> str:
        if num1 == "0" or num2 == "0":
            return "0"
        length1 = len(num1)
        length2 = len(num2)
        if length1 >= 110:
            return " "
        if length2 >= 110:
            return " "
        auxiliary = [0 for _ in range(length1 + length2)]
        num1_reversed = list(reversed(num1))
        num2_reversed = list(reversed(num2))
        index1 = length1 + length2 - 1
        for digit1 in num1_reversed:
            auxiliary_index = index1
            for digit2 in num2_reversed:
                auxiliary[auxiliary_index] = auxiliary[auxiliary_index] + int(digit1) * int(digit2)
                auxiliary[auxiliary_index - 1] = auxiliary[auxiliary_index - 1] + auxiliary[auxiliary_index] // 10
                auxiliary[auxiliary_index] = auxiliary[auxiliary_index] % 10
                auxiliary_index = auxiliary_index - 1
            index1 = index1 - 1
        index2 = 0
        while index2 < len(auxiliary):
            if auxiliary[index2] == 0:
                index2 = index2 + 1
            else:
                break
        result = ""
        for index3 in auxiliary[index2:]:
            result = result + str(index3)
        return result


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



猜您在找 Leetcode练习(Python):第415题:字符串相加:给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。 Leetcode练习(Python):数组类:第42题:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 Leetcode练习(Python):字符串类:第17题:电话号码的字母组合:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 Leetcode练习(python):字符串类:第93题:复原IP地址:给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 '.' 分隔。 Leetcode练习(Python):第66题:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。 Leetcode练习(Python):哈希表类:第3题:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 leetcode给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字 Leetcode练习(Python):第389题:找不同:给定两个字符串 s 和 t,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。 Leetcode练习(Python):第392题:判断子序列:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。
 
粤ICP备18138465号  © 2018-2026 CODEPRJ.COM