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

LeetCode--43.字符串相乘

前言:没脸提了,连续断更两天了,我会尽力克制自己的懒惰的

解题思路:

        1.获取信息:

                给定两个字符串形式表示的非负整数,返回这两个非负整数的乘积的字符串形式

                提示信息:字符串只由数字组成

                                  不包含任何前导零,除了单独一个数字0这种情况

        2.分析题目:

                既然要求出它们的乘积,那肯定会有将字符串形式转换为数字形式的过程,

                转换为了数字形式,那么就会用到乘法或者以加法来模拟乘法等方式求出乘积,

                之后还会有将数字形式转换为字符串形式的过程

                我们要设计代码的话,肯定是要根据需求来设计的

                我看了几种方法吧,其实大概中心思路都是一样的,毕竟只是一个乘法嘛

                所以,我用我自己的理解写了一份自己的代码,我的侧重点是防止溢出,你可以品味一下

        3.示例查验:

                略

        4.尝试编写代码:

                (1)暴力法(侧重于防止溢出)

                        思路:我想到由于数字是以字符串形式来展现出来的,所以我们在将它转换为数字形式的时候,难免可能会溢出,万一它是一个很大很大的数,那么我们该怎么办呢?

                        对于一个数,我们可以创建一个数组,将它各个位数上的数字依次存入其中,就从下标为0的位置开始存入,这样不仅各个位数上的数字我们都存入了,我们还可以根据它的下标来判断它的位数是多少

                        现在知道怎么存入一个数了,那么该怎么实现它们的乘法呢?

                        你试着在纸上将两个数分别按每个位数分开来,将它们相乘,按照乘法分配律展开,就会发现,每个位数的数与另一个乘数的每个位数的数相乘,得到的结果,只反映了该位数和一个更高的位数上的数,所以可以利用这个性质来进行乘法,并且储存结果

class Solution {
public:string multiply(string num1, string num2) {if(num1=="0"||num2=="0")return "0";//如果有任意一个数为0,则返回0int m=num1.size();//数字1的位数int n=num2.size();//数字2的位数vector<int>Num1(m,0);//创建数组来存储它们的数字形式vector<int>Num2(n,0);for(int i=m-1;i>=0;i--){//开始取出各个位数上的数字Num1[m-i-1]=num1[i]-'0';}for(int i=n-1;i>=0;i--){Num2[n-i-1]=num2[i]-'0';}vector<int>Num(m+n+1,0);//存储结果的数组for(int i=0;i<m;i++){//开始进行乘法的操作for(int j=0;j<n;j++){int num=Num1[i]*Num2[j];int les=0;for(int k=i+j;num>0||les!=0;k++){Num[k]+=(num%10+les);num/=10;les=0;if(Num[k]>9){les=Num[k]/10;Num[k]%=10;}}}}string res;//结果的字符串形式for(int i=m+n-1;i>=0;i--){//将数字形式转换为字符串形式if(res==""&&Num[i]==0)continue;res+=('0'+Num[i]);}return res;}
};

完了哦,有没有意犹未尽的感觉,如果有的话,就自己动手做做吧

我尽量从今天开始不断更,如果要断更了,我是会说的,不是小哑巴

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

相关文章:

  • Kotlin 常用语法糖完整整理
  • 九联UNT403AS_S905L3SB当贝固件优盘刷机包下载
  • 9、鸿蒙Harmony Next开发:栅格布局 (GridRow/GridCol)
  • AI产品经理面试宝典第7天:核心算法面试题-上
  • 在 Spring Boot 中使用 WebMvcConfigurer
  • AI技术正以前所未有的速度重塑职业生态与行业格局,尤其在自动化测试领域,AI驱动的测试框架通过智能化、低代码化重构传统测试流程。
  • python solr数据导出脚本
  • 分割网络Segformer
  • 界面组件DevExpress WPF中文教程:Grid - 如何检查节点?
  • mongodb 开源同步工具介绍
  • Windows 应用程序的 UI 框架:WPF、WinUI 3 和 UWP的差异区别
  • Django--02模型和管理站点
  • 【三】ObservableCollection 与 List 的区别
  • 【EGSR2025】材质+扩散模型+神经网络相关论文整理随笔(四)
  • (二)OpenCV——边缘增强与检测
  • 大数据在UI前端的应用创新:基于用户反馈的产品迭代优化系统
  • PPT处理控件Aspose.Slides教程:使用 C# 将 PPTX 转换为 EMF
  • 游戏的程序员会不会偷偷改自己账号的数据?
  • TypeScript---class类型
  • 工业通信升级新选择:耐达讯CCLINKIE转Modbus TCP网关
  • 猿人学js逆向比赛第一届第十九题
  • U-Net网络学习笔记(1)
  • 2025亚太中文赛项 B题疾病的预测与大数据分析保姆级教程思路分析
  • 机器学习数据集加载全攻略:从本地到网络
  • 【读代码】开源音乐分离工具Spleeter
  • 深度学习14(循环神经网络)
  • 深度学习篇---昇腾NPUCANN 工具包
  • JVM故障处理与类加载全解析
  • 数据结构自学Day5--链表知识总结
  • 大规模集群下 Prometheus 监控架构实战经验分享