【栈】Leetcode 字符串解码

题目讲解

394. 字符串解码
在这里插入图片描述


算法讲解

这道题有四种情况:1.遍历的时候遇到数字,我们计算并保存数字,将它加入到数字栈中;2.遍历的时候遇到[,我们就把字符保存,加入到字符栈中;3.当遇到],我们及时按照数字栈的栈顶元素的数字,添加字符栈中栈顶元素的次数;4.如果当前遍历的时候上述情况什么都不是,说明是正常的字符串,直接在字符栈的栈顶中添加即可

class Solution {
public:string decodeString(string s) {stack<int> stack_num;stack<string> stack_string;stack_string.push("");int i = 0;while(i < s.size()){if(s[i] >= '0' && s[i] <= '9'){int temp_num = 0;while(isdigit(s[i])){temp_num = temp_num * 10 +(s[i] - '0');i++;}stack_num.push(temp_num);}else if(s[i] == '['){i++;string temp_string;while(s[i] >= 'a' && s[i] <= 'z'){temp_string += s[i];i++;}stack_string.push(temp_string);}else if(s[i] == ']'){string temp_string = stack_string.top();stack_string.pop();int  cnt = stack_num.top();stack_num.pop();while(cnt--){stack_string.top() += temp_string;}i++;}//这个是字母前面没有数字的是 所以就是需要将它单独添加在栈里面else{string temp_string;while(i < s.size() && s[i] >= 'a' && s[i] <= 'z'){temp_string += s[i];i++;}stack_string.top() += temp_string;}}return stack_string.top();}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/835617.shtml

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

相关文章

如何远程控制另一部手机:远程控制使用方法

在现今高科技的社会中&#xff0c;远程控制手机的需求在某些情境下变得越来越重要。不论是为了协助远在他乡的家人解决问题&#xff0c;还是为了确保孩子的在线安全&#xff0c;了解如何实现这一功能都是有益的。本文将为您简要介绍几种远程控制手机的方法及其使用要点。 KKVi…

探索前端技术的未来:新兴工具与框架的引领

随着互联网的迅速发展&#xff0c;前端技术也在不断演进。作为前端开发者&#xff0c;我们时刻都要保持对新兴工具和框架的关注&#xff0c;以便跟上技术的脚步&#xff0c;同时也为自己的职业发展做好准备。在这篇文章中&#xff0c;我们将探索前端技术的未来趋势&#xff0c;…

交直流充电桩检测有哪些实验项目

交直流充电桩检测是为了保证充电桩的正常运行和使用安全&#xff0c;对充电桩的各项性能进行检测的过程。 1. 充电功能检测&#xff1a;检测充电桩的充电功能是否正常&#xff0c;包括充电电流、电压、功率等参数的测量和调整&#xff0c;以及充电过程中的故障诊断和处理。 2.…

Vue.js中使用JavaScript实现路由跳转详解

在Vue应用中&#xff0c;利用Vue Router进行页面间的导航是一个常见需求。本篇博客将通过示例代码详细介绍如何在Vue组件中使用JavaScript实现路由跳转&#xff0c;包括传递参数的两种方式&#xff1a;通过params和query。让我们一步步深入了解。 基础设置 首先&#xff0c;确…

Python图形界面(GUI)Tkinter笔记(目录)

【1】Python图形界面(GUI)Tkinter笔记&#xff08;一&#xff09;&#xff1a;根窗口的创建 【2】Python图形界面(GUI)Tkinter笔记&#xff08;二&#xff09;&#xff1a;标签Label的基本应用 【3】Python图形界面(GUI)Tkinter笔记&#xff08;三&#xff09;&#xff1a;控…

2024年4月24日华为春招实习试题【三题】-题目+题解+在线评测,2024.4.24,华为机试

2024年4月24日华为春招实习试题【三题】-题目题解在线评测&#xff0c;2024.4.24&#xff0c;华为机试 &#x1f3e9;题目一描述&#xff1a;输入格式输出格式样例1样例2样例3数据范围解题思路一&#xff1a;dfs解题思路二&#xff1a;直接二分查找哇&#xff01;解题思路三&am…

队列:动物收养所

问题 题目描述 有家动物收容所只收留猫和狗&#xff0c;但有特殊的收养规则。收养人有两种收养方式:第一种为直接收养所有动物中最早进入收容所的。第二种为选择收养的动物类型(猫或狗)&#xff0c;并收养该种动物中最早进入收容所的。给定一个操作序列代表所有事件。 若第一个…

实验室一块GPU都没有?这个云平台直接送4090免费无门槛代金券!

你有没有一些年代久远的老照片&#xff0c;或是网络下载的图片和视频&#xff0c;低分辨率、模糊还有噪点&#xff0c;如果能一键修复成高清就好了&#xff01;现在在AI算法工程师圈子里很火的GpuMall智算云&#xff0c;上面的镜像可以一键帮你修复照片&#xff01;比如我们用R…

【碳化硅】陷阱(traps)对SiC MOSFET阈值电压漂移的影响

这篇文章是关于硅碳化物(SiC)金属氧化物半导体场效应晶体管(MOSFET)的阈值电压漂移问题的研究。文章的主要目的是通过研究不同的陷阱(traps)对阈值电压漂移的影响,来解决SiC MOSFET的可靠性问题。 摘要(Abstract) 文章提出了一种研究方法,用于分析影响SiC MOSFET阈值…

LabVIEW学习记录4-局部变量、全局变量、共享变量

【LabVIEW】局部变量、全局变量、共享变量 一、变量定义二、内存分配三、竞争状态四、变量创建及简单使用示例4.1 局部变量4.1.1 局部变量的创建4.1.2 局部变量的编程实例 4.2 全局变量4.2.1 创建4.2.2 调用4.2.3 编程实例 4.3 共享变量 一、变量定义 LabVIEW&#xff08;Labor…

【Web后端】servlet基本概念

1.ServletAPI架构 HttpServlet继承GenericServletGenericServlet实现了Servlet接口&#xff0c;ServletConfig接口,Serializable接口自定义Servlet继承HttpServlet 2.Servlet生命周期 第一步&#xff1a;容器加载Servlet第二步&#xff1a;调用Servlet的无参构造方法&#xf…

【生信技能树】数据挖掘全流程

R包的安装&#xff0c;每次做分析的时候先运行这段代码把R包都安装好了&#xff0c;这段代码不需要任何改动&#xff0c;每次分析直接运行。 options("repos""https://mirrors.ustc.edu.cn/CRAN/") if(!require("BiocManager")) install.packag…

Spring Data JPA + Hibernate + Mysql

Hibernate是一个开源的对象关系映射(ORM)框架&#xff0c;国外使用比较多&#xff0c;国内主要使用的mybatis。 JPA&#xff0c;Spring Data JPA和Hibernate JPA只是一个ORM框架的规范, 对该规范的实现比较完整就是Spring Data JPA&#xff08;底层基于Hibernate实现&#xff…

TFS(淘宝分布式存储引擎

TFS&#xff08;淘宝分布式存储引擎&#xff09; 什么是TFS&#xff1f; ​ 根据淘宝2016年的数据分析&#xff0c;淘宝卖家已经达到900多万&#xff0c;有上十亿的商品。每一个商品有包括大量的图片和文字(平均&#xff1a;15k)&#xff0c;粗略估计下&#xff0c;数据所占的…

IaC实战指南:DevOps的自动化基石

基础设施即代码&#xff08;Infrastructure as Code&#xff0c;IaC&#xff09;是指利用脚本、配置或编程语言创建和维护基础设施的一组实践和流程。通过IaC&#xff0c;我们可以轻松测试各个组件、实现所需的功能并在最小化停机时间的前提下进行扩展。更值得一提的是&#xf…

ETLCloud中如何执行Java Bean脚本

ETLCloud中如何执行Java Bean脚本 在ETLCloud这一强大的数据集成和转换平台中&#xff0c;执行Java Bean脚本的能力为其增添了更多的灵活性和扩展性。Java Bean脚本不仅仅是一段简单的代码&#xff0c;而是一种强大的工具&#xff0c;可以帮助用户定制和优化数据处理的每一个环…

按键配合LDO实现开关功能

今天给大家分享一个学到的按键开关电路&#xff0c;适合没有足够空间给自锁开关的场景&#xff0c;既可以用于USB供电控制也可以用于电池供电控制。话不多说上电路图先。 核心任务就是通过按键控制LDO芯片的使能管脚的电平状态&#xff0c;这枚NCP芯片高电平使能&#xff0c;VB…

数学建模速成

建模手&#xff1a; 清风 【【强烈推荐】清风&#xff1a;数学建模算法、编程和写作培训的视频课程以及Matlab等软件教学】https://www.bilibili.com/video/BV1DW411s7wi?vd_sourcedb98a5294f4e914ff8d9b0cad1ee6bda 【【数学建模模型算法速成&#xff08;Matlab/Python双语…

Python图形界面(GUI)Tkinter笔记(三):控件的定位(1)

Tkinter(GUI)设计图形界面时有三种控件的包装方法去定位各控件在窗口(父容器、根窗口)上的位置。 【1】pack()方法:用方位来定位位置,类似于Word文档中的文字对齐方式。 【2】grid()方法:用二维表格式的坐标值定位,类似于EXCEL单位元。 【3】place()方法:用窗口的像…

代码随想录算法训练营第四十五天|70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数

70. 爬楼梯 &#xff08;进阶&#xff09; 思路&#xff1a; 我们之前做的 爬楼梯 是只能至多爬两个台阶。 这次改为&#xff1a;一步一个台阶&#xff0c;两个台阶&#xff0c;三个台阶&#xff0c;.......&#xff0c;直到 m个台阶。问有多少种不同的方法可以爬到楼顶呢&a…