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