当前位置: 首页 > 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.dtcms.com/a/274080.html

相关文章:

  • 软件过程模型核心特征与开发流程对照表
  • Android Glide使用与底层机制详解
  • 上位机知识篇---安装包架构
  • imx6ull-系统移植篇2—— U-Boot 命令使用(上)
  • Java 中线程通信方式笔记
  • tailwindCSS === 使用插件自动类名排序
  • ssm框架整合全攻略:从环境搭建到功能实现
  • 什么是Podman?能否替代Docker?Podman快速入门
  • dockerfile 笔记
  • STM32-DAC数模转换
  • 将英语转化为语音 英文转音频 英语转语音朗读
  • 嵌入式八股文之 GPIO
  • RISC-V:开源芯浪潮下的技术突围与职业新赛道 (三)RISC-V架构深度解剖(下)
  • FPGA实现SDI转LVDS视频发送,基于GTX+OSERDES2原语架构,提供2套工程源码和技术支持
  • Spring注解IoC与JUnit整合实战
  • MyBatis-Plus通用中等、大量数据分批查询和处理
  • 蔚来测开一面:HashMap从1.7开始到1.8的过程,既然都解决不了并发安全问题,为什么还要进一步解决环形链表的问题?
  • XPath 语法【Web 自动化-定位方法】
  • [java][springboot]@PostConstruct的介绍和用法
  • 机器学习基础知识【 激活函数、损失函数、优化器、 正则化、调度器、指标函数】
  • AI加持的开源知识库新秀:PandaWiki,如何用它打造智能化文档系统?
  • 「日拱一码」024 机器学习——防止过拟合
  • 【yolo】模型训练参数解读
  • 哪个ai写论文比较好?实测推荐这6大AI论文写作神器
  • CCF-GESP 等级考试 2025年6月认证C++五级真题解析
  • 2025年值得推荐的5款 AI赋能企业级项目管理软件工具大盘点!
  • Linux:多线程---同步生产者消费者模型
  • 【尝试】基于YoloV8做安全帽识别
  • 12. 说一下 https 的加密过程
  • 2025 年第十五届 APMCM 亚太地区大学生数学建模竞赛-B题 疾病的预测与大数据分析