9.28【A】

1190

栈模拟

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

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

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

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

就是整个模拟过程

一些点

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

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

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

  • 最后过滤掉所有括号。

On解法

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

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

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

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

相关推荐
白杨尚青3 小时前
C++进阶篇(五):红黑树——四条规则、三种插入情况与旋转变色
开发语言·数据结构·c++·stl·红黑树·平衡二叉树
likexuec21 小时前
数据结构(2)
数据结构
D e re k ZH1 天前
C++ 标准库算法全景指南
数据结构·c++·算法
冻柠檬飞冰走茶1 天前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
十二2 天前
【洛谷题解】P1083 [NOIP 2012 提高组] 借教室(二分答案 + 差分)
数据结构·c++·算法·蓝桥杯
D e re k ZH2 天前
C++ 从零入门(一):基础语法与程序结构
数据结构·c++·算法
careathers2 天前
【数据结构】基于比较的排序算法 - 交换排序
数据结构·算法·排序算法
H.莓飛2 天前
【C++】【STL】vector_OJ题
linux·服务器·开发语言·数据结构·c++·visual studio
老师我太想进步了20263 天前
【数据结构-4】算法美学之顺序表
数据结构·算法
GrowingIO技术社区3 天前
CDP、行为分析、归因与营销自动化有什么区别?
数据结构·数据挖掘·数据分析