皮卡丘python写leedcode_Day8

文章讲述了如何在不使用内置库的情况下,通过自定义函数dig_to_num和num_to_dig进行字符串表示的非负整数乘法,通过按位转换实现乘法运算并最终转换回字符串形式的过程。
摘要由CSDN通过智能技术生成

·43字符串相乘

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

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

 

示例 1:

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

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

·解题思路

题目要求不能使用库函数实现数字和字符串的转换。

我的思路是写两个子函数,实现字符串和数字的转换。但是在 子函数中,用了int和“{}”.fomat()两个函数按位转换。不知道符不符合题目要求,看评论区,好多解题都是按位转。
——————————————————————————

官方解题也使用了int和str,ok没问题了

·代码

class Solution(object):
    def multiply(self, num1, num2):
        def dig_to_num(dig):
            Num = 0
            for i in range(len(dig)):
                a = int(dig[i]) * pow(10, len(dig) - 1 - i)
                Num += a
            return Num

        def num_to_dig(num):
            if num == 0:
                return '0'
            result = ''
            while num > 0:
                last = num % 10
                last = "{}".format(last)
                result = last + result
                num = num // 10
            return result


        Num1 = dig_to_num(num1)
        Num2 = dig_to_num(num2)
        res = Num1 * Num2
        res = num_to_dig(res)

        return res

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值