LeetCode-Problem 43:大数相乘
算法问题
给定两个以字符串表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积。
算法实现
以下是大神的算法,膜拜大神:
首先,长度位m的数乘以长度为n的数的结果不超过m+n。
接下来,我们来看下两数相乘的计算过程,从右向左,将数2中的每一位的数与数1相乘,最后将结果相加。下图演示的是两数相乘的整个过程,从下图中,我们可以得到,对于num[i] *num[j](数1中的第i位数字与数2中的第j位数字相乘的结果只会存放在第【i+j】和【i+j+1】这两位上)
因此,我们实现算法如下:
public static String multiply(String num1, String num2) {int m = num1.length(), n = num2.length();int[] pos = new int[m + n];for (int i = m - 1; i >= 0; i--) {for (int j = n - 1; j >= 0; j--) {int mul = (num1.charAt(i) - '0') * (num2.charAt(j) - '0');int p1 = i + j, p2 = i + j + 1;int sum = mul + pos[p2];pos[p1] += sum / 10;pos[p2] = (sum) % 10;}}StringBuilder sb = new StringBuilder();for (int p : pos) {if (!(sb.length() == 0 && p == 0)) {sb.append(p);}}return sb.length() == 0 ? "0" : sb.toString();}
另外,常见的大数相乘算法还有:
- Karatsuba算法
- FFT快速傅里叶变换算法
LeetCode-Problem 43:大数相乘相关推荐
- leetcode -43 -字符串相乘 -java版
文章目录 题目 代码 题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = &quo ...
- LeetCode 43. 字符串相乘【c++/java详细题解】
目录 1.题目 2.思路 3.c++代码 4.java代码 1.题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. ...
- 【Day24】 LeetCode算法题 (注释详细+解题思路)[43. 字符串相乘 ] [1800. 最大升序子数组和]
刷题打卡,第 二十四 天 题目一.43. 字符串相乘 题目二.1800. 最大升序子数组和 题目一.43. 字符串相乘 原题链接:43. 字符串相乘 题目描述: 给定两个以字符串形式表示的非负整数 n ...
- C#中关于处理两个大数相乘的问题
方法一:直接利用.NET FrameWork 4.0中自带的System.Numeric类库 添加了对此类库的引用后,直接调用方法即可计算: View Code 1 BigInteger num1 = ...
- POJ 2389 Bull Math(水~Java -大数相乘)
题目链接:http://poj.org/problem?id=2389 题目大意: 大数相乘. 解题思路: java BigInteger类解决 o.0 AC Code: 1 import java. ...
- python中字符串相乘结果_LeetCode 43. 字符串相乘 | Python
43. 字符串相乘 题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1:输入: num1 = " ...
- C语言无符号双字节乘法,华为OJ机试标题:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...
华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘) 题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出 ...
- 超大数相乘的java代码,java版大数相乘
在搞ACM的时候遇到大数相乘的问题,在网上找了一下,看到了一个c++版本的 用java搞了一个版本 这里说一下思路 将数字已字符串形式接收,转换成int[]整型数组,然后num1[],num2[]依次 ...
- 【LeetCode43:字符串相乘(大数相乘)(Java实现)】
字符串相乘(大数相乘) 一.题目描述 1.题目内容 2.样例 二.解决方案 1.算法流程 1)分析(竖式计算) 2)算法流程 2.Java实现 1)核心代码 2)完整测试代码 一.题目描述 1.题目内 ...
最新文章
- 在Windows和Linux上编译gRPC源码操作步骤(C++)
- 职校中的计算机学的是什么,职校计算机专业主要学什么课
- [LUOGU] 1090 合并果子
- TransmittableThreadLocal 解决 线程池线程复用 无法复制 InheritableThreadLocal 的问题
- 工业交换机品牌选择时注意的事项介绍
- 自动驾驶路径规划论文解析(6)
- 瞧一瞧,看一看,微信应用号(小程序)
- FAT32,EXFAT,FAT16和FAT12的所有信息
- 大数据改变中国交通浙江用阿里云看未来
- 对象流--对象的序列化
- HDU2201 熊猫阿波的故事【概率】
- linux内存管理_架构师必读:Linux 的内存分页管理
- 图纸怎么折?(A0,A1,A2,A3の图纸如何折成A4大小)
- [BZOJ4134][JZOJ4401]ljw和lzr的hack比赛
- H5+ API 设置手机状态栏颜色以及沉浸式状态栏
- 【第54题】输入、输出系列2-批量重命名,批量移动文件,批量删除tmp文件
- OmniGraffle 制作表格 调整对象
- 云顶之奕pbe服务器注册,云顶之弈手游pbe服
- [转载]通过 call gate 访问目标 code segment
- 矩阵对角线求和C++