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 字符串相乘(大数相乘)相关推荐

  1. python大数相乘

    python大数相乘,时间复杂度O(n^2) 1.把数据扔到list里然后逆转,list顺序0~n对应个位.十位... 2.创建存储结果list,长度默认为两个被乘数长度之和 3.按位相乘,相同竖线位 ...

  2. 【LeetCode43:字符串相乘(大数相乘)(Java实现)】

    字符串相乘(大数相乘) 一.题目描述 1.题目内容 2.样例 二.解决方案 1.算法流程 1)分析(竖式计算) 2)算法流程 2.Java实现 1)核心代码 2)完整测试代码 一.题目描述 1.题目内 ...

  3. C语言无符号双字节乘法,华为OJ机试标题:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...

    华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘) 题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出 ...

  4. 超大数相乘的java代码,java版大数相乘

    在搞ACM的时候遇到大数相乘的问题,在网上找了一下,看到了一个c++版本的 用java搞了一个版本 这里说一下思路 将数字已字符串形式接收,转换成int[]整型数组,然后num1[],num2[]依次 ...

  5. 大数相乘、大数相加、大数相减Java版本

    为什么80%的码农都做不了架构师?>>>    题目:两个非常大的数字相乘(相加,相减) 该题目在java中可以使用BigInteger类中的方法来实现.否则的话可以使用如下方式来实 ...

  6. C#中关于处理两个大数相乘的问题

    方法一:直接利用.NET FrameWork 4.0中自带的System.Numeric类库 添加了对此类库的引用后,直接调用方法即可计算: View Code 1 BigInteger num1 = ...

  7. 大数相乘(c语言/c++)

    大数相乘(c语言/c++) 方法一:做加法 方法二.做乘法 方法一:做加法 思路:模拟竖乘过程.将num2从后往前一个一个的去乘num1.然后累加.在累加的时候记得在末尾补0.补的0的个数就是第二个字 ...

  8. 算法题-大数相乘问题

    今天在网上看到一个大数相乘的问题,题目是这样的:输入两个整数,要求输出这两个数的乘积.输入的数字可能超过计算机内整形数据的存储范围. 分析: 由于数字无法用一个整形变量存储,很自然的想到用字符串来表示 ...

  9. 大数相乘(数组表示)

    大数相乘 首先说一下乘法计算的算法:同样是模拟人工计算时的方法. 从低位向高位乘,在竖式计算中,我们是将乘数第一位与被乘数的每一位相乘,记录结果之后,用第二位相乘,记录结果并且左移一位,以此类推,直到 ...

最新文章

  1. YOLOv4:目标检测(windows和Linux下Darknet 版本)实施
  2. 如何优雅的实现 try/catch 异常块?
  3. jQuery reset
  4. 浅谈主动学习(Active Learning)
  5. 分子生物学之蛋白质概述
  6. Java中final和static对修饰类、方法、属性的总结
  7. 关于python中excel写入案例
  8. 运营推广人员黑话,小心躺枪!
  9. 别再用 Redis List 实现消息队列了,Stream 专为队列而生
  10. 测试鬼的软件是假的吗,中国被禁止的6种测鬼方法 证实鬼魂真实存在(谣言)
  11. 普通软件项目开发过程规范(五)—— 总结
  12. 组合数学—容斥原理与鸽巢原理
  13. ERP项目实施记录06
  14. 第三章 SQL知识点总结
  15. 地理探测器的学习与研究初探
  16. mysql 关键字 desc_mysql数据库表字段使用DESC等关键字报错及解决方法
  17. 计算机网络教程第五版|微课版 - 第四章 网络层 - 习题【补充】
  18. Richard Hamming ``You and Your Research''
  19. base64解码是什么
  20. 启英泰伦CI-C22GS02(ci1122)单麦离线智能语音模块制作声控小台灯

热门文章

  1. R语言安装xlsx包以及可能遇到的问题
  2. ftp_mdtm() 函数
  3. 解决el-pagination无法点击的问题
  4. 免费主题装修wordpress网站(3步骤)
  5. Cocos2d-x血条跟随怪物运动----之游戏开发《赵云要格斗》(5)
  6. Linux下RabbitMQ基础命令操作
  7. Linux修改文件出现[O]pen Read-Only、(E)dit anyway、(R)ecover解决方法
  8. 张近东:苏宁就是一家互联网企业
  9. W50 - 999、在线教育学生数据分析
  10. 单板计算机Beaglebone-Black首发上手体验