java实现两大数相乘

该博客介绍了如何使用Java实现两个非负整数的乘法操作,将结果以字符串形式返回。通过倒序遍历数字,逐位相乘并处理进位,最终得到完整的乘积。文章提供了一个具体的例子,如1234乘以56,详细解释了计算过程。
摘要由CSDN通过智能技术生成

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

例如:
输入: num1 = “2”, num2 = “3” 输出: “6”

输入: num1 = “1234”, num2 = "56"输出: “69104”

思路如下: 先确定个位数>再确定十位数>再确定百位数>…
可参考我的另外一篇文章:java实现两个大数相加

用1234+56举例列举步骤:
1.采用个位乘以个位,十位乘以十位,所以采用倒序遍历1234,56
2.第一轮就是4,3,2,1分别与6相乘,记1234×6结果为n1
3.再拿 (6×4) =24。发现进位了,24%10=4,确定结果n1个位一定是4,此时储存进位的2
4.再拿 (6×3)+2=20。发现进位了,20%10=0,可以确定n1十位一定0,此时储存进位的2
5.再拿 (6×2)+2=14。发现进位了,14%10=4,可以确定n1百位一定是4,此时储存进位的1
6.再拿 (6×1)+1=7。发现没进位,7%10=7,可以确定n1千位一定是7,此时储存进位的0
7.把每轮的结果拼起来,这个时候n1的值就为7404
8.开始第二轮4,3,2,1分别与5相乘,记录1234×5的结果为n2
9.步骤同3-7。此时n2的结果为6170但是实际上应该是1234×50,所以结果为61700
10.这个时候就把每轮的结果加上来7404+61700=69104

步骤讲完了:那么算法如下

//两数相乘
public static String multiply(String num1, String num2) {
   
        if (num1 == null || num2 == null || num1.equals("0") || num2.equals("0")) {
   
            return "0";
        }
        num1 = (new StringBuffer(num1)).reverse().toString();
        num2 = (new StringBuffer(num2)).
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值