字符串相乘——力扣

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

**注意:**不能使用任何内置的 BigInteger 库或直接将输入转换为整数。

示例 1:

复制代码
输入: num1 = "2", num2 = "3"
输出: "6"

示例 2:

复制代码
输入: num1 = "123", num2 = "456"
输出: "56088"
 

代码实现:

java 复制代码
class Solution {
    public String multiply(String num1, String num2) {
        int len1=num1.length();
        int len2=num2.length();
        int[] arr=new int[len1+len2];
        //记录位置
        int flag=0;
        for(int i=len1-1;i>=0;i--){
            //初始位置
            flag=i+len2;
            for(int j=len2-1;j>=0;j--){
                int num=(num1.charAt(i)-'0')*(num2.charAt(j)-'0');
                int carry=num/10;
                int cur=num%10;
                arr[flag]+=cur;
                //如果当前位大于10了就进位
                if(arr[flag]>=10){
                    //确保当前位-1还是有效位
                    //然后进位
                    if(flag-1>=0){
                        arr[flag-1]+=arr[flag]/10;
                        arr[flag]=arr[flag]%10;
                    }
                }
                //进位
                if(flag-1>=0){
                    arr[flag-1]+=carry;
                }
                flag--;
            }
        }
        //转换结果为字符串
        StringBuffer res=new StringBuffer();
        for(int i=0;i<arr.length;i++){
            //把前边为零的消掉(比如2*3 arr数组存储的是0 6),同时避免了一些长数组相乘为零的情况
            //(比如0*9901 arr数组存储为0 0 0 0 0。)
            if(!(res.length()==0&&arr[i]==0)){
                res.append(arr[i]);
            }
        }
        //如果res.length==0说明结果为0
        return res.length()==0?"0":res.toString();
    }
}

测试结果:

相关推荐
你撅嘴真丑1 小时前
第九章-数字三角形
算法
曹牧1 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
uesowys1 小时前
Apache Spark算法开发指导-One-vs-Rest classifier
人工智能·算法·spark
ValhallaCoder1 小时前
hot100-二叉树I
数据结构·python·算法·二叉树
董董灿是个攻城狮1 小时前
AI 视觉连载1:像素
算法
爬山算法2 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
智驱力人工智能2 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
kfyty7252 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
猫头虎2 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
李少兄2 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea