当前位置: 首页 > news >正文

字符串相乘——力扣

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

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

示例 1:

输入: num1 = "2", num2 = "3"
输出: "6"

示例 2:

输入: num1 = "123", num2 = "456"
输出: "56088"
 

代码实现:

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();
    }
}

 

测试结果:
 

相关文章:

  • Java 大视界 -- Java 大数据在智能体育赛事运动员表现分析与训练优化中的应用(122)
  • Python实例:PyMuPDF实现PDF翻译,英文翻译为中文,并按段落创建中文PDF
  • 环形链表问题的探究与代码实现
  • 【网络安全 | 漏洞挖掘】通过JWT的IDOR实现账户接管
  • 探索Java多线程的核心概念与实践技巧,带你从入门到精通!
  • 007-Property在C++中的实现与应用
  • Agent范式引领AI革命:Manus如何重塑生产力版图?
  • 【AGI】OpenManus 技术全景解析
  • ResultMap
  • Codeforces Round 305 (Div. 1) C. Mike and Foam 容斥原理、质因数分解
  • tee命令
  • 09 HarmonyOS NEXT 仿uv-ui Tag组件开发教程系列(三)
  • Linux rootfs:如何开机就自动添加某个用户?
  • 【C++】异常
  • 基于Canvas和和原生JS实现俄罗斯方块小游戏
  • torch.cat 函数介绍
  • 自然语言处理:Transformer、BERT
  • 数据结构(顺序表)
  • 基于PaddleNLP使用DeepSeek-R1搭建智能体
  • SpringBoot与Sentinel整合,解决DDoS攻击与异常爬虫请求问题
  • 新华每日电讯:把纪律的螺丝拧得紧而又紧
  • 4天内,云南昆明又一县市区原主官被查
  • 对话作家吉井忍:“滚石”般的生活,让我看到多种人生可能
  • 小米法务部:犯罪团伙操纵近万账号诋毁小米,该起黑公关案告破
  • 上海将建设万兆小区、园区及工厂,为模型训练数据的传输提供硬件支持
  • 国际博物馆日|航海博物馆:穿梭于海洋神话与明代造船工艺间