博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode43. Multiply Strings(思路及python解法)
阅读量:2241 次
发布时间:2019-05-09

本文共 1020 字,大约阅读时间需要 3 分钟。

Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2, also represented as a string.

Example 1:

Input: num1 = "2", num2 = "3"Output: "6"

Example 2:

Input: num1 = "123", num2 = "456"Output: "56088"

计算大数相乘。

比较简单的思路就是直接根据每个数字所在位置进行计算。如下所示

class Solution:    def multiply(self, num1: str, num2: str) -> str:        res=0        for i,n1 in enumerate(num1[::-1]):            for j,n2 in enumerate(num2[::-1]):                res+=int(n1)*(10**i)*int(n2)*(10**j)        return str(res)

或者用dp算法,能快一些。计算dp[i+j]初的结果,然后dp[i+j+1]要进位,然后dp[i+j]再取余数(回归一位数)。

然后去除数字首位的0,返回字符串。

class Solution:    def multiply(self, num1: str, num2: str) -> str:        dp=[0]*(len(num1)+len(num2))                for i,n1 in enumerate(num1[::-1]):            for j,n2 in enumerate(num2[::-1]):                dp[i+j]+=int(n1)*int(n2)                dp[i+j+1]+=dp[i+j]//10                dp[i+j]%=10                while dp[-1]==0 and len(dp)>1:dp.pop()        return ''.join(str(a) for a in dp[::-1])

 

转载地址:http://qjrbb.baihongyu.com/

你可能感兴趣的文章
解决activemq多消费者并发处理
查看>>
UDP连接和TCP连接的异同
查看>>
hibernate 时间段查询
查看>>
java操作cookie 实现两周内自动登录
查看>>
Tomcat 7优化前及优化后的性能对比
查看>>
Java Guava中的函数式编程讲解
查看>>
Eclipse Memory Analyzer 使用技巧
查看>>
tomcat连接超时
查看>>
谈谈编程思想
查看>>
iOS MapKit导航及地理转码辅助类
查看>>
检测iOS的网络可用性并打开网络设置
查看>>
简单封装FMDB操作sqlite的模板
查看>>
iOS开发中Instruments的用法
查看>>
强引用 软引用 弱引用 虚引用
查看>>
数据类型 java转换
查看>>
"NetworkError: 400 Bad Request - http://172.16.47.117:8088/rhip/**/####t/approval?date=976
查看>>
mybatis 根据 数据库表 自动生成 实体
查看>>
C结构体、C++结构体、C++类的区别
查看>>
进程和线程的概念、区别和联系
查看>>
CMake 入门实战
查看>>