[leetcode]Multiply Strings @ Python


原題地址:https://oj.leetcode.com/problems/multiply-strings/

題意:

Given two numbers represented as strings, return multiplication of the numbers as a string.

Note: The numbers can be arbitrarily large and are non-negative.

解題思路:兩個非負數字字符串的相乘。其實就是大數乘法。算法的關鍵是要先將兩個字符串翻轉過來,然后按位進行相乘,相乘后的數不要着急進位,而是存儲在一個數組里面,然后將數組中的數對10進行求余(%),就是這一位的數,然后除以10,即/10,就是進位的數。注意最后要將相乘后的字符串前面的0去掉。

代碼:

class Solution:
    # @param num1, a string
    # @param num2, a string
    # @return a string
    def multiply(self, num1, num2):
        num1 = num1[::-1]; num2 = num2[::-1]
        arr = [0 for i in range(len(num1)+len(num2))]
        for i in range(len(num1)):
            for j in range(len(num2)):
                arr[i+j] += int(num1[i]) * int(num2[j])
        ans = []
        for i in range(len(arr)):
            digit = arr[i] % 10
            carry = arr[i] / 10
            if i < len(arr)-1:
                arr[i+1] += carry
            ans.insert(0, str(digit))
        while ans[0] == '0' and len(ans) > 1:
            del ans[0]
        return ''.join(ans)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM