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

算法-字符串-43.字符串相乘

一、题目

二、思路解析

        1.思路:

                1.双重for循环,倒序依次相乘

                2.在倒序处理进位问题

                3.最后返回参数的类型是string,用StringBuilder拼接,再转换为字符串

        2.常用方法:

                1.equals,比较对象内容是否一致

"0".equals(num1);

                2.append(),拼接字符

sb.append(res[index]);

                3.toString(),转字符串

sb.toString();

        3.核心逻辑:

                1.处理特殊情况,当两个字符串有其中一个为"0",即返回结果值为“0”

if("0".equals(num1)||"0".equals(num2)) return "0";

                2.定义一个整型数组res来存储每一个位数于位数的乘积值,无需关注是否进位问题

int[]res=new int[num1.length()+num2.length()];for(int i=num1.length()-1;i>=0;i--){int temp1=num1.charAt(i)-'0';for(int j=num2.length()-1;j>=0;j--){int temp2=num2.charAt(j)-'0';res[i+j+1]+=temp1+temp2;
}
}

                3. 处理进位问题

for(int i=res.length-1;i>0;i--){res[i-1]+=res/10;res[i]=res[i]%10;
}

                4.拼接字符串

                        √.注意事项:两数相乘,最后的结果位数范围是不超过两数位数相加,同时也不会小于 两数位数相加-1;故需要判断首字符是否为0,才好决定从哪一位开始拼接

int index=res[0]==0?1:0;StringBuilder sb=new StringBuilder();for(int i=index;i<res.length;i++){sb.append(res[i]);}return sb.toString();

三、代码实现

class Solution {public String multiply(String num1, String num2) {if("0".equals(num1)||"0".equals(num2)){return "0";}int size1=num1.length();int size2=num2.length();int[]res=new int[size1+size2];for(int i=size1-1;i>=0;i--){int t1=num1.charAt(i)-'0';for(int j=size2-1;j>=0;j--){int t2=num2.charAt(j)-'0';res[i+j+1]+=t1*t2;}}for(int i=res.length-1;i>0;i--){res[i-1]+=res[i]/10;res[i]=res[i]%10;}int start=res[0]==0?1:0;StringBuilder sb=new StringBuilder();for(int i=start;i<res.length;i++){sb.append(res[i]);}return sb.toString();}
}

http://www.lryc.cn/news/500306.html

相关文章:

  • linux的vdagent框架设计
  • CV工程师专用键盘开源项目硬件分析
  • qtcanpool 知 08:Docking
  • Milvus向量数据库01-基础概念
  • mysql备份数据库
  • NLP与LLM的工程化实践与学习思考 - 写在开头
  • LeetCode322. 零钱兑换(2024冬季每日一题 28)
  • Unix、GNU、BSD 风格中 ps 参数的区别
  • 单片机读写内部flash实现断电数据存储
  • 注意力机制介绍
  • 爬虫运行后数据如何存储?
  • C# 自动自定义截图的内容
  • Java的Stream流:文件处理、排序与串并行流的全面指南
  • [Maven]下载安装、使用与简介
  • 056 WXML+ WXSS+PHP+LW+校园配送商城微信小程序开发与设计 源码 文档 全套资料
  • Python 在同一/或不同PPT文档之间复制幻灯片
  • C#生成CSR(CertificateSigningRequest)和密钥
  • Docker 安装 Oracle创建表空间并导入数据库
  • elementui table子级tree懒加载bug
  • AI与低代码技术融合:如何加速企业智能化应用开发?
  • 【C#】新建窗体文件,Form、UserControl
  • ansible学习笔记之02command模块与shell模块
  • 在Docker中部署禅道,亲测可用
  • C++(十二)
  • 【数学建模】线性规划问题及Matlab求解
  • 【JavaWeb后端学习笔记】Spring全局异常处理器
  • PT8M2102 触控型 8Bit MCU
  • 4. React 性能优化技巧:如何让你的应用更快
  • pytest中使用conftest做测试前置和参数化
  • Spring Boot 中使用 @Transactional 注解配置事务管理