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

news2024/9/21 2:26:52

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.coloradmin.cn/o/2150865.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

命令行运行python时找不到模块怎么解决

问题: 新建了一个项目,目录结构如下: 然后在pycharm中运行glovar是没有问题的,但是在命令行中运行就会提示找不到init模块。 这是因为在pycharm中运行的时候,pycharm会自动将项目所在目录添加到了sys.path中&#xf…

天宝Trimble RealWorks2024.0.2注册机 点云后处理软件 点云三维重建软件

一、功能特色 1、强大的点云数据处理平台 Trimble Realworks2024是市面上先进的点云数据处理软件,能够配准、可视化、浏览和直接处理市面上几乎所有主流品牌扫描仪点云数据,包括Leica、Riegl、ZF、Faro、Topcon等。 2、业界领先的无目标全自动配准 T…

Apache Flink 流批融合技术介绍

摘要:本文整理自阿里云高级研发工程师、Apache Flink Contributor 周云峰老师在 Apache Asia CommunityOverCode 2024中的分享。内容主要分为以下三个部分: 从流批一体到流批融合流批融合的技术解决方案社区进展及未来展望 一、从流批一体到流批融合 1&…

记忆化搜索专题——算法简介力扣实战应用

目录 1、记忆化搜索算法简介 1.1 什么是记忆化搜索 1.2 如何实现记忆化搜索 1.3 记忆化搜索与动态规划的区别 2、算法应用【leetcode】 2.1 题一:斐波那契数 2.1.1 递归暴搜解法代码 2.1.2 记忆化搜索解法代码 2.1.3 动态规划解法代码 2.2 题二&#xff1…

网络模型的保存与读取

文章目录 一、模型的保存二、文件的加载三、模型加载时容易犯的陷阱 一、模型的保存 方式1:torch.save(vgg16, “vgg16_method1.pth”) import torch import torchvision.modelsvgg16 torchvision.models.vgg16(pretrainedFalse) torch.save(vgg16, "vgg16_method1.pth…

oracle数据库启动

文章目录 背景一、步骤1.登录oracle用户2.启动监听服务3.启动数据库 背景 oracle数据库启动 一、步骤 1.登录oracle用户 代码如下(示例): su - oracle2.启动监听服务 代码如下(示例): lsnrctl start成…

【C++】STL----vector常见用法

🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:C从小白到高手 🌹往期回顾🌹:[C]string类 🔖 流水不争,争的是滔滔不息。 文章目录 一、vector的介绍vector…

MATLAB绘图基础8:双变量图形绘制

参考书:《 M A T L A B {\rm MATLAB} MATLAB与学术图表绘制》(关东升)。 8.双变量图形绘制 8.1 散点图 散点图用于显示两个变量间的关系,每个数据点在图上表示为一个点,一个变量在 X {\rm X} X轴,一个变量在 Y {\rm Y} Y轴&#…

【Python报错已解决】AttributeError: ‘DataFrame‘ object has no attribute ‘append‘

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

暴雨信息|《2024 年全球人工智能趋势报告》发布,GPU仍是AI发展最大关键之一

全球著名调研机构WEKA近日正式发布《2024年全球人工智能趋势报告》,该报告是基于全球1500人工智能决策者的深度调查,覆盖金融、政府、医疗保健等多个行业,解锁了人工智能领域的关键见解和策略。 人工智能正成为许多组织战略的一个基本面&…

滑动窗口(8)_最小覆盖字串

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 滑动窗口(8)_最小覆盖字串 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 1. 题…

6.C++程序中的基本数据类型

数据类型是指在C中用于声明不同类型变量或函数的一个系统或抽象或者是一个分类,它决定了变量存储占用的内存空间以及解析存储的位模式。其实数据类型可以理解为固定内存大小的别名,是创建变量的模具,具体使用哪种模具(包括自定义&…

基于深度学习的文本情感原因提取研究综述——论文阅读

前言 既然要学习情感分析,那么肯定还要了解情感原因对抽取的发展历程,所以我又搜了一篇研究综述,虽然是2023年发表的,但是里面提及到的历程仅停留到2022年。这篇综述发布在TASLP期刊,是音频、声学、语言信号处理的顶级…

进程间的通信-信号量

信号量 1.资源竞争 资源竞争 : 当多个进程同时访问共享资源时,会产生资源竞争,最终最导致数据混乱临界资源 : 不允许同时有多个进程访问的资源,包括硬件资源(CPU、内存、存储器以及其他外围设备)与软件资源(共享代码段、共享数据结构)临界区…

有关JS下隐藏的敏感信息

免责声明:本文仅做分享! 目录 JavaScript 介绍 核心组成 工具 FindSomething ** 浏览器检查 ** LinkFinder URLfinder ** SuperSearchPlus ** ffuf ParasCollector waymore Packer Fuzzer JS逆向 应用: 小结: Ja…

基于Python+SQLite的课程管理系统

系统需求简介 1.1需求分析 实现一个具体的课程管理系统。按照软件工程思路设计简化的专业课数据库,尽量模拟现有专业课程一个学期的选课排课原型实际情况。(注:本系统由本人单独设计、开发完成) 1.2 数据结构需求分析 课程管理…

NAND闪存:迎来新的发展机遇

2024年,存储市场正在经历着动态的变化,其中包括合同价格的上涨、制造商营收的增长以及多项技术上的突破。在这个背景下,主要的存储公司正在为新的挑战做准备,尤其是在NAND闪存领域即将面临转型的情况下。 扩展阅读:20…

PMData:人工智能之运动记录数据集

简介 在这个数据集中,我们展示了 PMData 数据集,旨在将传统的生活记录与体育活动记录相结合。这样的数据集可以开发几个有趣的分析应用程序,例如,可以使用额外的运动数据来预测和分析日常发展,如人的体重和睡眠模式&a…

数据飞轮:打造业务增长的持续循环

在当今数据驱动的世界中,企业必须利用数据的力量才能保持竞争力。然而,仅仅收集和分析数据是不够的;企业必须能够从他们的数据中创造一个持续增长的循环,才能保持成功。其中一种方法就是创建数据飞轮。接下来让我们来探讨一下什么…

centos7如何连接网络 centos7wifi连接

这段时间重新学习 Linux 知识,用的是笔记本,连接的是无良房东家的 WiFi,IP地址经常变动。每次都要修改 Xshell 的配置才能连上虚拟机。效率很低。 为此,必须要解决这个 IP 地址经常变动的事情!这里讲解的版本是&#…