43. 字符串相乘(中)

题目

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

注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。

示例 1:

输入: num1 = "2", num2 = "3"
输出: "6"

示例 2:

输入: num1 = "123", num2 = "456"
输出: "56088"

题解

  • 分析:有字符串num1 = "123"和 num2 = "456",把两个字符串拆开,36+350+3400+206+2050+20400+1006+10050+100*400
class Solution:
    def multiply(self, num1: str, num2: str) -> str:
        f1 = 1
        ans = 0
        # 倒序遍历
        for i in range(len(num1)-1,-1,-1):
            # 进位数
            f2 = 1
            # n1 乘以进位数
            n1 = int(num1[i]) * f1
            # 倒序遍历
            for j in range(len(num2)-1,-1,-1):
                n2 = int(num2[j]) * f2   
                ans += n1 * n2 
                # 进位数处理 *10
                f2 *=10
            f1 *=10
        return str(ans)
posted @ 2024-03-29 08:57  Frommoon  阅读(10)  评论(0编辑  收藏  举报