算法——逆波兰式

http://t.csdnimg.cn/Wg8vu

逆波兰式思路:

对于每个元素,它检查是否是一个操作符(“+”、“-”、“*” 或 “/”)。如果是,它就从栈中弹出两个元素,执行相应的操作,然后将结果推回到栈中。如果元素是一个数字,它就将其推到栈中。

在处理所有元素后,栈顶的元素就是表达式的结果。

进阶:. - 力扣(LeetCode)

给定一个经过编码的字符串,返回它解码后的字符串。

编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。

你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。

此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。

思路:

数字存放在数字栈,字符串存放在字符串栈,遇到右括号时候弹出一个数字栈,字母栈弹到左括号为止。与逆波兰式思路类似。

class Solution {
public:string decodeString(string s) {stack<int> num_stk;//数字栈stack<string> str_stk;//字符串栈string str;//当前正在累积的字符串for(int i=0;i<s.size();++i){if(isdigit(s[i])){//遇到数字int n=s[i]-'0';while(isdigit(s[++i])){//数字可能有多位n=10*n+s[i]-'0';}num_stk.push(n);//加入数字栈--i;//往后退一步(for循环处有自增操作)}else if(s[i]=='['){//遇到左括号str_stk.push(str);//将当前累积的字符串入栈str="";//开始记录新的一段字符串}else if(s[i]==']'){//遇到右括号string tmp;//将当前字符串按数字栈栈顶元素为倍数进行扩展for(int i=0;i<num_stk.top();++i){tmp+=str;}str=tmp;num_stk.pop();//数字栈栈顶元素弹出//字符串栈栈顶元素弹出来并与当前字符串拼接,作为新的当前正在累积的字符串str=str_stk.top()+str;str_stk.pop();}else{str+=s[i];//当前字符串继续累积}}return str;}
};

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

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

相关文章

c++不同数据类型的大小

C++提供了各种基本数据类型,以及一些复合数据类型,如数组、结构体、枚举和类等。以下是C++中常见的数据类型: ChatGPT ChatGPT C++是一种静态类型的编程语言,意味着在编写代码时必须显式地声明每个变量的数据类型。C++提供了各种基本数据类型,以及一些复合数据类型,如数…

【微信小程序】流量主-激励视频(激励广告)下发策略,每天三次免费体验,然后再次点击触发激励视频,当日不再触发。

如题&#xff1a; 允许用户有三次体验效果&#xff0c;然后弹出激励视频弹窗&#xff0c;之后当日不再弹出。 体验小程序&#xff1a; /*** 判断当前项目当天是否点击超过3次&#xff0c;触发广告效果。* 若&#xff0c;当天低于三次&#xff0c;则新增&#xff0c;若高于…

图片标注编辑平台搭建系列教程(4)——fabric几何定制渲染

背景 标注的几何&#xff0c;有时需要一些定制化的渲染样式&#xff0c;例如&#xff0c;线中间展示箭头&#xff0c;表示方向。本期教程教大家如何实现fabric几何定制化渲染。 带箭头的线 fabric提供了一些原生的几何&#xff0c;例如Point、Polyline、Polygon。同时提供了…

前端学习<三>CSS进阶——03-网页设计和开发中,那些困扰大神的关于字体的知识

前言 我周围的码农当中&#xff0c;有很多是技术大神&#xff0c;却常常被字体这种简单的东西所困扰。 这篇文章&#xff0c;我们来讲一讲关于字体的常识。这些常识所涉及到的问题&#xff0c;有很强的可操作性&#xff0c;都是在实际业务中真实遇到的&#xff0c;都是需要开…

软件资源分享六:EPLAN Electric P8 2024 | Eplan 2024 中文版软件介绍+保姆级安装教程

原文链接&#xff1a;安装激活教程 EPLAN Electric P8 2024 | Eplan 2024 中文版软件介绍安装教程 EPLAN 2024是一款电气设计软件&#xff0c;它可以用于自动化系统的设计、文档编制和维护。EPLAN可以对电气设计的各个方面进行完整的支持&#xff0c;包括电气控制系统、机械设…

Spring 整合 Log4j2日志框架

1. Log4j2日志概述 在项目开发中&#xff0c;日志十分的重要&#xff0c;不管是记录运行情况还是定位线上问题&#xff0c;都离不开对日志的分析。日志记录了系统行为的时间、地点、状态等相关信息&#xff0c;能够帮助我们了解并监控系统状态&#xff0c;在发生错误或者接近某…

【JavaSE】一维数组和二维数组详解

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 一维数组 基本语法 初始化 遍历和打印 数组是引用型变量 基本类型变量与引用类型变量的区别 null 数组传参和返回 总结 二维数组 基本语法 初始化 遍历和打印 一维数组…

C语言 结构体

目录 1.结构体的声明 1.1结构体是什么&#xff1f; 1.2声明 1.3结构成员的类型 1.4结构体变量的定义和初始化 &#xff08;1&#xff09;定义 &#xff08;2&#xff09;初始化 2.结构体成员的访问 3.结构体传参 4.结语 1.结构体的声明 1.1结构体是什么&#xff1f; 结…

Android Drawable - Shape Drawable使用详解

shape图形 –简单介绍shape图形 –如何画?shape图形 –参数详细解析 shape图形简单介绍 用xml实现一些形状图形, 或则颜色渐变效果, 相比PNG图片, 占用空间更小; 相比自定义View, 实现起来更加简单. 怎么画? 在res/drawable/目录下建一个XML资源文件Shape图片语法相对复杂…

c++如何从txt文件读取/保存数据

1、读取 #include <fstream> #include <iostream> #include <string>CString type_str[20];std::ifstream file("ecat_type.txt"); // 打开文件第一行个数&#xff0c;第二行开始类型if (!file.is_open()) {//打开失败for(int i0;i<17;i){type…

代码随想录Day37

Day 37 贪心算法 Part06 今日任务 738.单调递增的数字968.监控二叉树 代码实现 738.单调递增的数字 做了这么多贪心的题&#xff0c;这是唯一一道自己写出来的&#xff0c;就是思路虽然一开始就对了&#xff0c;感觉没那么难&#xff0c;但是代码还是比较复杂&#xff0c;用…

论文精读--GPT4

现有的所有模型都无法做到在线学习&#xff0c;能力有限&#xff0c;而让大模型拥有一个tools工具库&#xff0c;则可以使大模型变成一个交互式的工具去协调调用API完成任务&#xff0c;同时GPT4还联网了&#xff0c;可以不断地更新自己的知识库 多模态模型&#xff0c;接受文…

单V及多V感知在自动驾驶在恶劣环境条件下的感知提升方案

单V及多V感知在自动驾驶在恶劣环境条件下的感知提升方案 附赠自动驾驶学习资料和量产经验&#xff1a;链接 自动驾驶中的视觉感知是车辆在不同交通条件下安全、可持续地行驶的关键部分。然而&#xff0c;在大雨和雾霾等恶劣天气下&#xff0c;视觉感知性能受到多种降级效应的极…

Pygame基础9-射击

简介 玩家用鼠标控制飞机&#xff08;白色方块&#xff09;移动&#xff0c;按下鼠标后&#xff0c;玩家所在位置出现子弹&#xff0c;子弹匀速向右飞行。 代码 没有什么新的东西&#xff0c;使用两个精灵类表示玩家和子弹。 有一个细节需要注意&#xff0c;当子弹飞出屏幕…

RK3568 学习笔记 : 独立修改与编译 u-boot

前言 开发板&#xff1a;【正点原子】ATomPi-CA1 开发板&#xff0c;配置&#xff1a;RK3568&#xff0c;4GB DDRAM 64GB emmc 开发板资料给了 u-boot 与 Linux kernel 源码&#xff0c;尝试手动编译。 本篇记录 收到编译 RK3568 平台 u-boot 的方法 环境搭建 由于 RK 平台…

椋鸟数据结构笔记#5:树、二叉树基础

文章目录 树树的相关概念树的表示 二叉树基础二叉树分类满二叉树完全二叉树 二叉树的性质二叉树的存储结构顺序存储链式存储 萌新的学习笔记&#xff0c;写错了恳请斧正。 树 树是一种非线性的数据结构&#xff0c;它是由 n 个节点组成的一个具有层次关系的数据集合。其大概结…

安卓手机APP开发的功能之一:通知概述

安卓手机APP开发的功能之一&#xff1a;通知概述 一个通知是一个消息&#xff0c;这是一个安卓显示在你的&#xff21;&#xff30;&#xff30;的界面的外面的消息&#xff0e; 以提醒的方式提供给用户的消息&#xff0c;是和其他人的通信&#xff0c;或者是来自于你的&#…

新手学python还是c?

考虑到个人情况和职业规划是非常重要的。我这里有一套编程入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习编程&#xff0c;不妨点个关注&#xff0c;给个评论222&#xff0c;私信22&#xff0c;我在后台发给你。 Python作为初学者入门语言…

【算法】链表翻转的两种写法

初始化 ListNode listNode5 new ListNode(5, null); ListNode listNode4 new ListNode(4, listNode5); ListNode listNode3 new ListNode(3, listNode4); ListNode listNode2 new ListNode(2, listNode3); ListNode listNode1 new ListNode(1, listNode2); doReverse(lis…

7-294 筛法求素数(埃式筛、欧拉筛)

素数是仅仅能被它本身和1整除的任何整数。筛法求素数是一种查找素数的方法。它的算法如下&#xff1a; 1、创建一个数组&#xff0c;并将所有元素初始化为1&#xff08;真&#xff09;。具有素数下标的数组元素将保持为1&#xff0c;而其它数组元素最终将被设置为0。 2、从数…