python 字符串相乘(大数相乘)
python 字符串相乘(大数相乘)
来自力扣43题,题目如下。
给定两个以字符串形式表示的非负整数 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)或直接将输入转换为整数来处理。
思路:
与大数相乘类似,整体可按位相乘,只不过要考虑string和int的区别
1.考虑字符串为“0”的情况,如存在“0",直接return
2.字符串反转
3.创建存储结果list,长度默认为两个被乘数长度之和
4.按位相乘,相同竖线位置累加
5.结果list从0位开始遍历,如果大于9进位
6.结果逆序,转成字符串
7.去除首位的0
代码:
def mul(num1,num2):if num1=="0" or num2=="0":return "0"num1=num1[::-1]#字符串反转,如果是list反转,则用list.reverse()num2=num2[::-1]len_all=len(num1)+len(num2)#result="".join("0" for i in range(len_all))result=[0 for i in range(len_all)]for i in range(len(num1)):for j in range(len(num2)):result[i+j]+=int(num1[i])*int(num2[j])for i in range(len_all):if result[i]>9:result[i+1]+=result[i]//10result[i]=result[i]%10result.reverse()resu="".join(str(result[i]) for i in range(len(result)))res=str(int(resu))#去掉前面的0# for i in range(len(resu)):# if resu[i]=="0":# res=resu[i+1:]# else:# breakprint(res)
mul("225","225")
输出:
python 字符串相乘(大数相乘)相关推荐
- python大数相乘
python大数相乘,时间复杂度O(n^2) 1.把数据扔到list里然后逆转,list顺序0~n对应个位.十位... 2.创建存储结果list,长度默认为两个被乘数长度之和 3.按位相乘,相同竖线位 ...
- 【LeetCode43:字符串相乘(大数相乘)(Java实现)】
字符串相乘(大数相乘) 一.题目描述 1.题目内容 2.样例 二.解决方案 1.算法流程 1)分析(竖式计算) 2)算法流程 2.Java实现 1)核心代码 2)完整测试代码 一.题目描述 1.题目内 ...
- C语言无符号双字节乘法,华为OJ机试标题:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...
华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘) 题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出 ...
- 超大数相乘的java代码,java版大数相乘
在搞ACM的时候遇到大数相乘的问题,在网上找了一下,看到了一个c++版本的 用java搞了一个版本 这里说一下思路 将数字已字符串形式接收,转换成int[]整型数组,然后num1[],num2[]依次 ...
- 大数相乘、大数相加、大数相减Java版本
为什么80%的码农都做不了架构师?>>> 题目:两个非常大的数字相乘(相加,相减) 该题目在java中可以使用BigInteger类中的方法来实现.否则的话可以使用如下方式来实 ...
- C#中关于处理两个大数相乘的问题
方法一:直接利用.NET FrameWork 4.0中自带的System.Numeric类库 添加了对此类库的引用后,直接调用方法即可计算: View Code 1 BigInteger num1 = ...
- 大数相乘(c语言/c++)
大数相乘(c语言/c++) 方法一:做加法 方法二.做乘法 方法一:做加法 思路:模拟竖乘过程.将num2从后往前一个一个的去乘num1.然后累加.在累加的时候记得在末尾补0.补的0的个数就是第二个字 ...
- 算法题-大数相乘问题
今天在网上看到一个大数相乘的问题,题目是这样的:输入两个整数,要求输出这两个数的乘积.输入的数字可能超过计算机内整形数据的存储范围. 分析: 由于数字无法用一个整形变量存储,很自然的想到用字符串来表示 ...
- 大数相乘(数组表示)
大数相乘 首先说一下乘法计算的算法:同样是模拟人工计算时的方法. 从低位向高位乘,在竖式计算中,我们是将乘数第一位与被乘数的每一位相乘,记录结果之后,用第二位相乘,记录结果并且左移一位,以此类推,直到 ...
最新文章
- YOLOv4:目标检测(windows和Linux下Darknet 版本)实施
- 如何优雅的实现 try/catch 异常块?
- jQuery reset
- 浅谈主动学习(Active Learning)
- 分子生物学之蛋白质概述
- Java中final和static对修饰类、方法、属性的总结
- 关于python中excel写入案例
- 运营推广人员黑话,小心躺枪!
- 别再用 Redis List 实现消息队列了,Stream 专为队列而生
- 测试鬼的软件是假的吗,中国被禁止的6种测鬼方法 证实鬼魂真实存在(谣言)
- 普通软件项目开发过程规范(五)—— 总结
- 组合数学—容斥原理与鸽巢原理
- ERP项目实施记录06
- 第三章 SQL知识点总结
- 地理探测器的学习与研究初探
- mysql 关键字 desc_mysql数据库表字段使用DESC等关键字报错及解决方法
- 计算机网络教程第五版|微课版 - 第四章 网络层 - 习题【补充】
- Richard Hamming ``You and Your Research''
- base64解码是什么
- 启英泰伦CI-C22GS02(ci1122)单麦离线智能语音模块制作声控小台灯
热门文章
- R语言安装xlsx包以及可能遇到的问题
- ftp_mdtm() 函数
- 解决el-pagination无法点击的问题
- 免费主题装修wordpress网站(3步骤)
- Cocos2d-x血条跟随怪物运动----之游戏开发《赵云要格斗》(5)
- Linux下RabbitMQ基础命令操作
- Linux修改文件出现[O]pen Read-Only、(E)dit anyway、(R)ecover解决方法
- 张近东:苏宁就是一家互联网企业
- W50 - 999、在线教育学生数据分析
- 单板计算机Beaglebone-Black首发上手体验