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

【刷题日记】43. 字符串相乘

43. 字符串相乘

其实就是大数乘法题,这道题用草稿纸演练一下,其实很好找到方法,模拟大数乘法即可。需要注意的是+进位和迭代值,还有注意向下取整和去除前导0(容易遗漏)。去除前导0的时候还要注意如果全是0,除完了的情况下要手动赋值答案为‘0’。

讲一下这道题的思路:

1.初始化:创建一个长度为 len1 + len2 的数组 pos(x位数*y位数最多等于x+y位数)用于存储每一位的乘积结果,为了方便加减,设置每一个位置的初始值为 0。

2.乘法逻辑:我们可以倒序,也可以直接按照数字来倒序遍历,将当前位字符转换为数字 n1n2。【通过n1=+num[i]这样子赋值将其转化为数字】

3.累加结果:计算当前位置的总和 sum,即当前位乘积加上之前存储的值 pos[i + j + 1]。更新结果数组:

  • pos[i + j + 1] = sum % 10存储当前位的值
  • pos[i + j] += Math.floor(sum / 10)将进位加到前一位

4.处理前导零:在完成所有乘法后,可能会在 pos 数组的最前面出现前导零。通过 while 循环去除这些零。【一直判断pos【0】是否为0,如果是则shift出去。】

pos.shift() 方法用于移除数组的第一个元素。如果 pos 数组不为空,使用 pos.join('') 将数组转为字符串并返回。

5.最后返回结果,注意要判断答案的长度,如果 pos 数组为空,返回 ‘0’,否则转为字符串返回。

代码:

//大数乘法
var multiply = function (num1, num2) {const len1 = num1.length;const len2 = num2.length;const pos = new Array(len1 + len2).fill(0);for (let i = len1 - 1; i >= 0; i--) {const n1 = +num1[i];//将 num1[i] 的值转换为一个数字for (let j = len2 - 1; j >= 0; j--) {const n2 = +num2[j];const multi = n1 * n2;const sum = multi + pos[i + j + 1];//注意要加上pos[i+j+1]pos[i + j + 1] = sum % 10;//本位pos[i + j] += Math.floor(sum / 10);//增位,记得向下取整数,注意是+=,要加上之前的值迭代}}//除掉前导零while (pos[0] == 0) {pos.shift();}return pos.length ? pos.join('') : '0';
};

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

相关文章:

  • Verilog学习之旅~
  • linux之mysql安装
  • 单身狗的逆袭之路之开发相亲交友系统
  • 【Spring】IocDI详解(6)
  • Redis系列之底层数据结构SDS
  • 【STM32】esp8266连接wifi
  • 网络运维故障处理
  • C++第十一节课 new和delete
  • 【爱给网-注册安全分析报告-无验证方式导致安全隐患】
  • 苹果为什么不做折叠屏手机?
  • 目标检测经典算法的个人理解
  • FewShotChatMessagePromptTemplate 和 FewShotPromptTemplate区别
  • 《程序猿之设计模式实战 · 策略模式》
  • deepinlinux-v23用deepinunioncode初始c例子
  • 前端框架对比选择:如何在众多技术中找到最适合你的
  • 数据结构—(java)反射,枚举,lambda表达式
  • 机器学习(西瓜书)第 14 章 概率图模型
  • Python异步编程-asyncio详解
  • UniApp如何打包成客户端应用程序
  • 你应该掌握的12条饭局规矩!
  • 【541. 反转字符串 II 简单】
  • 基于PHP的丽江旅游管理系统
  • vue3+Element-plus el-input 输入框组件二次封装(支持金额、整数、电话、小数、身份证、小数点位数控制,金额显示中文提示等功能)
  • jQuery 简介 ③ ready()事件函数、jQuery 二个原则及容错机制
  • 选择Alluxio来解决AI模型训练场景数据访问的五大理由
  • POS共识机制简介
  • Spring为什么要用三级缓存解决循环依赖?
  • 【Redis入门到精通三】Redis核心数据类型(List,Set)详解
  • 本科生如何学习机器学习
  • 海康威视摄像机和录像机的监控与回放