9.28【A】

1190

栈模拟

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

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

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

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

就是整个模拟过程

一些点

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

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

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

  • 最后过滤掉所有括号。

On解法

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

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

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

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

相关推荐
by209998 小时前
哈希表——快速找到数据:冲突、删除与扩容的实现
数据结构·c++·哈希算法·散列表
Code_Solitude8 小时前
c语言:关于qsoet函数知识点
c语言·数据结构·算法
Pniubi10 小时前
快速排序(力扣基础)(递归)
java·数据结构·算法
inrichtt20 小时前
第八课时:SPI总线揭秘:四线全双工通信的奥
c语言·数据结构·stm32·单片机·嵌入式硬件
HPtiger20 小时前
数据结构——选择排序
数据结构·算法·排序算法
丑梨数据21 小时前
信创环境里跑文档工具:格式兼容与本地合规的几个坑
数据结构·人工智能·算法·决策树·排序算法
烂蜻蜓21 小时前
Pandas入门教程(四):Series数据结构——创建、索引与常用方法
数据结构·pandas
CS创新实验室1 天前
一棵树怎么做到“自平衡还不太费力“?——红黑树的旋转与染色
数据结构·算法·红黑树·408·计算机考研
Logic1011 天前
C语言/数据结构位运算题解:异或XOR找出被挑选一次的果子编号——只出现一次的数字
c语言·数据结构·算法·数组·位运算·时间复杂度·空间复杂度
从小白到软工1 天前
4-3 项目-学生成绩管理系统(上)
c语言·开发语言·数据结构·经验分享·ai编程