字符串相乘——力扣

给定两个以字符串形式表示的非负整数 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();
    }
}

测试结果:

相关推荐
qeen871 小时前
【数据结构】自平衡二叉搜索树各种旋转算法原理解析及AVL树的C++实现
数据结构·c++·算法
lucas_AI1 小时前
1.2B 小模型赢过 235B 大模型:NaviDC-OCR 把文档解析卷明白了
人工智能·深度学习·算法
桦说编程1 小时前
盘点并发集合里那些容易误判的行为
java·后端·性能优化
冻柠檬飞冰走茶2 小时前
PTA基础编程题目集 7-35有理数均值(C++语言实现)
开发语言·数据结构·c++·算法·均值算法
IT爱学堂2 小时前
java版数据结构和算法+AI算法和技能学习指南
java·开发语言
民乐团扒谱机2 小时前
【微实验】倒谱算法(Cepstrum)深度解析:原理、数学推导与代码实现
人工智能·算法·语音识别
evans在进步3 小时前
LeetCode 394:字符串解码——Java 单栈模拟与嵌套解析详解
java·python·leetcode
AI人工智能+电脑小能手3 小时前
大白话说Java设计模式-17-装饰器模式(源码剖析篇)
java·spring·设计模式·装饰器模式·源码分析·io流
Nil2083 小时前
leetcode 189轮转数组
数据结构·算法·leetcode
-dzk-3 小时前
【动态规划】LC 118.杨辉三角
算法·动态规划