当前位置: 首页 > 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();}
}

相关文章:

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

一、题目 二、思路解析 1.思路&#xff1a; 1.双重for循环&#xff0c;倒序依次相乘 2.在倒序处理进位问题 3.最后返回参数的类型是string&#xff0c;用StringBuilder拼接&#xff0c;再转换为字符串 2.常用方法&#xff1a; 1.equals,比较对象内容是否一致 "0".eq…...

linux的vdagent框架设计

1、vdagent Linux 的 spice 客户代理由两部分组成&#xff0c;一个系统范围的守护进程 spice-vdagentd 和一个 X11 会话代理 spice-vdagent&#xff0c;每个 X11 会话有一个。spice-vdagentd 通过 Sys-V initscript 或 systemd 单元启动。 如下图&#xff1a;spice-vdagent&a…...

CV工程师专用键盘开源项目硬件分析

1、前言 作为一个电子发烧友&#xff0c;你是否有遇到过这样的问题呢。当我们去查看函数定义的时候&#xff0c;需要敲击鼠标右键之后选择go to definition。更高级一些&#xff0c;我们使用键盘的快捷键来查看定义&#xff0c;这时候可以想象一下&#xff0c;你左手按下ALT&a…...

qtcanpool 知 08:Docking

文章目录 前言口味改造后语 前言 很久以前&#xff0c;作者用 Qt 仿照前端 UI 设计了一个 ministack&#xff08;https://gitee.com/icanpool/qtcanpool/blob/release-1.x/src/libs/qcanpool/ministack.h&#xff09; 控件&#xff0c;这个控件可以折叠。部分用户体验后&#…...

Milvus向量数据库01-基础概念

Milvus向量数据库01-基础概念 Zilliz Cloud 集群由全托管 Milvus 实例及相关计算资源构成。您可以在 Zilliz Cloud 集群中创建 Collection&#xff0c;然后在 Collection 中插入 Entity。Zilliz Cloud 集群中的 Collection 类似于关系型数据库中的表。Collection 中的 Entity …...

mysql备份数据库

MySQL备份/还原 的方法 mysql备份数据库 mysql备份单个数据库 #mysql备份某个库格式&#xff1a; mysqldump -h主机名 -P端口 -u用户名 -p"密码" --database 数据库名 > 文件名.sql#实例&#xff1a;mysql备份某个库&#xff1a; mysqldump -h10.*.*.9 -P3306 …...

NLP与LLM的工程化实践与学习思考 - 写在开头

NLP与LLM的工程化实践与学习思考[24年半年工作总结] - 写在开头 0 开头的开头 0 开头的开头 24年因为一些工作原因&#xff0c;短暂在NLP领域遨游了半年。这半年对我的影响蛮大&#xff0c;一来是因为此前从没接触过这个方向学到新东西挺开心的&#xff0c;二来是在工程化实践…...

LeetCode322. 零钱兑换(2024冬季每日一题 28)

给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1 。 你可以认为每种硬币的数量是无限的。 示…...

Unix、GNU、BSD 风格中 ps 参数的区别

注&#xff1a;本文为“不同风格中 ps 命令参数的区别”相关文章合辑。 未去重。 BSD 风格和 UNIX 风格中 ps 参数的区别 作者&#xff1a;Daniel Stori 译者&#xff1a;LCTT Name1e5s | 2017-06-17 10:53 One Last Question ps aux 以及 ps -elf 都是查看进程的方式&…...

单片机读写内部flash实现断电数据存储

在单片机编程中&#xff0c;读写内部Flash存储器是一种常见的方法来实现断电数据存储。这里以STM32系列单片机为例&#xff0c;展示如何通过HAL库进行简单的内部Flash读写操作。 以下是一个完整的示例代码&#xff0c;展示了如何擦除、写入和读取内部Flash中的数据。请注意&am…...

注意力机制介绍

注意力机制介绍 1.注意力机制由来,以及解决什么问题2.什么是注意力机制3.注意力机制分类及如何实现3.1 Soft Attention(常见):软注意3.1.1普通Encoder-Decoder框架3.1.2加入Attention的Encoder-Decoder框架3.1.3如何理解注意力概率分布3.1.4 Attention机制本质思想 3.2 Hard At…...

爬虫运行后数据如何存储?

爬虫运行后获取的数据可以存储在多种不同的存储系统中&#xff0c;具体选择取决于数据的规模、查询需求以及应用场景。以下是一些常见的数据存储方法&#xff1a; 1. 文件系统 对于小型项目或临时数据存储&#xff0c;可以直接将数据保存到本地文件中。常见的文件格式包括&…...

C# 自动自定义截图的内容

C# 自动自定义截图的内容 using System; using System.Drawing; using System.Runtime.InteropServices; class Program {[DllImport("user32.dll")]public static extern IntPtr GetDesktopWindow();[DllImport("user32.dll")]public static extern IntP…...

Java的Stream流:文件处理、排序与串并行流的全面指南

Java的Stream流&#xff1a;文件处理、排序与串并行流的全面指南 Java 8 引入了 Stream API&#xff0c;这是一个用于处理集合数据的强大工具&#xff0c;它提供了一种声明式的方式来进行聚合操作。Stream 不是一个数据结构&#xff0c;而是一种对数据进行操作的抽象&#xff…...

[Maven]下载安装、使用与简介

很多框架的下载使用的流程和思路是差不多的&#xff0c;这里以maven做详细介绍。 下载安装与配置变量 下载 首先&#xff0c;我们要使用maven&#xff0c;必须先下载它的相关文件。想要下载&#xff0c;我们可以直接搜索maven。找到它的官网。这里不绕弯子&#xff0c;直接给出…...

056 WXML+ WXSS+PHP+LW+校园配送商城微信小程序开发与设计 源码 文档 全套资料

校园配送微信小程序 1.项目描述2. 1.绪论3.项目技术与功能4.界面展示5.源码获取 1.项目描述 摘 要 近几年来&#xff0c;随着互联网和电子商务的快速发展和普及&#xff0c;改变了人们日常消费模式。尤其是移动互联网的相结合&#xff0c;使得人们日常生活中更多的是通过手机移…...

Python 在同一/或不同PPT文档之间复制幻灯片

复制幻灯片可以帮助我们更高效地完成工作&#xff0c;节省大量的制作时间。通过复制现有的幻灯片&#xff0c;可以快速创建新的演示文稿&#xff0c;而无需重新设计板式样式等。此外&#xff0c;复制幻灯片还可以帮助我们保持内容的一致性&#xff0c;使整个PPT演示文稿看起来更…...

C#生成CSR(CertificateSigningRequest)和密钥

使用C#原生生成CSR(CertificateSigningRequest)和密钥。 生成的私钥妥善保存&#xff0c;丢失无法找回。 调用 var contents X509Helper.SigningRequestHelper.CreateSigningRequest("yourdomain.com", ["*.yourdomain.com"], X509Helper.AsymmetricAl…...

Docker 安装 Oracle创建表空间并导入数据库

一、Docker 安装Oracle 1、检查docker 版本 2、docker 下载镜像 3、 docker启动容器 4、 进入容器内部 5、安装成功&#xff0c;使用客户端工具连接 二、创建数据库用户与表空间 1、查询数据库文件位置 2、创建表空间 3、创建用户 4、设置权限 三、导出数据库DMP …...

elementui table子级tree懒加载bug

1. 删除子级刷新列表子级依然显示 2.更新状态子级列表未刷新 3.编辑子级后刷新页面显示状态未变更 el-table 树表格load源码 首先&#xff0c;load可以执行&#xff0c;但是只剩一个子节点就有问题&#xff0c;那么就直接可以定位bug在load方法里&#xff1a; 文件路径&am…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...

高防服务器价格高原因分析

高防服务器的价格较高&#xff0c;主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因&#xff1a; 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器&#xff0c;因此…...

Linux安全加固:从攻防视角构建系统免疫

Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...

STM32标准库-ADC数模转换器

文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”&#xff1a;输入模块&#xff08;GPIO、温度、V_REFINT&#xff09;1.4.2 信号 “调度站”&#xff1a;多路开关1.4.3 信号 “加工厂”&#xff1a;ADC 转换器&#xff08;规则组 注入…...

算法—栈系列

一&#xff1a;删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...