43. Multiply Strings 字符串相乘
1. 原始题目
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
示例 1:
输入: num1 = "2", num2 = "3"
输出: "6"
示例 2:
输入: num1 = "123", num2 = "456"
输出: "56088"
说明:
num1和num2的长度小于110。num1和num2只包含数字0-9。num1和num2均不以零开头,除非是数字 0 本身。- 不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。
2. 思路

对于两个长为num1和num2的整数相乘,结果最长为num1+num2,所以先初始化这样长的一个数组。然后可以看到建立两个循环来存放每个索引的结果,当前的两个数字相乘后会在数组的两个位置产生结果。即商和余数。依次便利即可。存放完成后再对数组进行一边处理,因为有的位置可能>9,需要再进位至前一位。如果开头是0的话要删除。如果全0数组只返回”0“即可。
3. 实现
class Solution:
def multiply(self, num1: str, num2: str) -> str:
res = [0]*(len(num1)+len(num2))
for i in range(len(num1)-1, -1, -1): # 2,1,0
for j in range(len(num2)-1, -1, -1): # 1,0
temp = int(num1[i])*int(num2[j])
res[i+j+1] += temp%10 # 更新第一个索引位置
res[i+j] += temp // 10 # 更新第二个索引位置
for i in range(len(res)-1,-1,-1): # 将数组在遍历一遍更新>9的数,进位
if res[i]>9:
res[i-1]+=res[i]//10
res[i] = res[i]%10
res = ''.join([str(s) for s in res]).lstrip('') # 删掉开头的0
if not res: return '' # 如果全0的话只返回"0"就好
return res
43. Multiply Strings 字符串相乘的更多相关文章
- [LeetCode] 43. Multiply Strings ☆☆☆(字符串相乘)
转载:43. Multiply Strings 题目描述 就是两个数相乘,输出结果,只不过数字很大很大,都是用 String 存储的.也就是传说中的大数相乘. 解法一 我们就模仿我们在纸上做乘法的过程 ...
- [LeetCode] 43. Multiply Strings 字符串相乘
Given two non-negative integers num1 and num2represented as strings, return the product of num1 and ...
- 43. Multiply Strings字符串相乘
网址:https://leetcode.com/problems/multiply-strings/submissions/ 参考:https://leetcode.com/problems/mult ...
- Multiply Strings 字符串相乘
http://www.cnblogs.com/TenosDoIt/p/3735309.html https://blog.csdn.net/fly_yr/article/details/4805561 ...
- [LeetCode] Multiply Strings 字符串相乘
Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...
- 43. Multiply Strings 字符串表示的大数乘法
Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...
- leetcode 43 Multiply Strings 大数相乘
感觉是大数相乘算法里面最能够描述.模拟演算过程的思路 class Solution { public String multiply(String num1, String num2) { if(nu ...
- 043 Multiply Strings 字符串相乘
给定两个以字符串表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积.注意: num1 和 num2 的长度均小于110. num1 和 num2 均只包含数字 0 ...
- Leetcode43. Multiply Strings字符串相乘(大数相乘)
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = "2", num ...
随机推荐
- ListView与ArrayAdapter的搭配使用
在android中,ListView是一种很重要的控件,一般的使用中,常建立一个所需类型的ArrayList,再通过ArrayAdapter把ListView绑定到ArrayList上,通过Array ...
- Ubuntu以及CentOS7修改ssh端口号详细步骤
1.Ubuntu修改ssh端口号步骤: 1.修改sshd.config文件.执行vim etc/ssh/sshd_config.增加上我们需要增加的ssh的端口号.图例增加了5309的端口号. ESC ...
- pycharm Python解释器的配置--可以指定批处理文件为解释器
这样就可以很方便的配置一些环境变量了,很方便很有创意的功能,再次Mark一下以防忘记
- 一键压测工具改造(locust)
本文内容来自“天外归云”大神,原文链接http://www.cnblogs.com/LanTianYou/p/5987741.html,目前只对启动脚本做了一些改造,应该说是,不适用powershel ...
- JUnit测试框架的使用
1.学习Junit框架的使用 可通过以下两个示例进行学习. A.Junit使用方法示例1 1)把Junit引入当前项目库中 新建一个 Java 工程—coolJUnit,打开项目coolJUnit 的 ...
- ArrayList集合长度的问题
// 每次集合中实际包含的元素个数(count)超过了可包含元素的个数capcity //的时候集合就会向内存中申请多开启一倍的空间,来保证集合长度够用 static void Main(strin ...
- hibernate注解JPA
1.JPA与hibernate 什么是JPA ? java persistence api :java持久化api,同一的ORM规范,是由sun公司指定的规范接口,hibernate实现了JPA规范. ...
- 2017年10月22日 基础SQL语句&数据库创建主外键关系
1.SQL语句的注释 双减号:-- 或者/**/2.创建数据库create database 数据库名称(不允许以数字开头,不允许以符号开头,不要起汉语名字) 3.如何选中这个数据库use 数据库名 ...
- 解决flashfxp连接虚拟机报错 530 permission denied
菜鸟使用flashfxp遇到连接报错. [21:36:19] [R] 530 Permission denied.[21:36:19] [R] 连接失败 (连接已被客户端关闭) 搜索后发现,是因为li ...
- My eclipse jdk unbound的解决
project --> properties --> java build path --> 双击出错的jdk --> alternate jre --> install ...