9.28【A】

1190

栈模拟

使用栈,记录的是左括号的下标

遍历原字符串s,遇到左括号时,将其下标入栈

遇到右括号时,取出栈顶元素,然后知道左右括号下标,就知道中间的所有字符

再使用字符串的反转函数,重复这个过程

就是整个模拟过程

一些点

  • st.top() 取栈顶下标。

  • st.pop() 只负责弹出,不返回值。

  • reverse(s.begin() + cur + 1, s.begin() + i) 反转的是当前一对括号内部的子串。

  • 最后过滤掉所有括号。

On解法

目前对于遍历方向改变的理解,是说遇到左括号,就说明遍历方向改改变了,然后遇到右括号说明其对应的左括号的改变结束;但问题是,在遇到左括号时,如何知道接下来的遍历起点是哪里?即无法知道其对应的右括号在哪,以及,如果左括号后面衔接的是左括号等一系列情况,又如何做?

如果遇到左括号,那就从右括号的位置开始反向遍历,那这个反向该什么时候结束呢?如果遇到其它配队的右括号呢?

意思是只要遇到括号就跳转到它所对应的另一个括号位置上,但这样做的原理是什么?为什么能对于左右括号的处理是一样的?以及,这个遍历什么时候结束,即输出答案?该如何规避可能的死循环,比如i()s,左右括号连在一起的情况?或者(is),左括号跳到右括号,再碰到左括号后,如何知道这个括号是新的,还是自己的?

就是针对括号是传送门+转向器的这个想法,是如何想到的?我只能知道遇到一次时的合法性,但没想到可以两次遍历同一个括号,因为方向不同而结果不同,但如何保证这样做的合法性呢?如何保证某些字符不会被重复访问两次呢?

相关推荐
code斗10 小时前
Java数据结构:堆详解
java·开发语言·数据结构
Elaine33612 小时前
数据结构与算法-程序
数据结构·python·算法·计算机基础·编程基础
Logic10113 小时前
C语言/数据结构位运算题解:异或XOR找出游戏速通中的“独特初始能量值“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
Bruce_Liuxiaowei15 小时前
Python 字典默认值完全指南:从 KeyError 到 defaultdict
开发语言·数据结构·python·字典
All for pursuit.19 小时前
【二叉树-10】114.二叉树展开为链表
数据结构·c++·算法·leetcode·链表
心中有你021421 小时前
C语言埃氏筛法(素数筛选)
c语言·数据结构·算法
释厄6231 天前
多黑洞具现论·物理/生物/金融三域显化·虚拟宇宙黑洞·奇点=0 圆圈
开发语言·数据结构·人工智能·程序人生·安全威胁分析
库玛西1 天前
攻克 408 数据结构:图论基石深度拆解(数学极值推演 + 存储内存剖析 + BFS/DFS 双核模板)
数据结构·算法·深度优先·广度优先·图搜索算法
m0_547486667 天前
《数据结构教程》全套 PPT课件2026
数据结构