20. 有效的括号
讲完了栈实现队列,队列实现栈,接下来就是栈的经典应用了。
大家先自己思考一下有哪些不匹配的场景,在看视频我讲的都有哪些场景,落实到代码其实就容易很多了。
题目链接/文章讲解/视频讲解:https://programmercarl.com/0020.%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7.html
重点是特殊情况有几种,一定要能全部找到并列出来,这题一共有三种特殊情况会导致不匹配:1、左括号多了;2、右括号多了;3、左右括号按照顺序不匹配
1047. 删除字符串中的所有相邻重复项
栈的经典应用。
要知道栈为什么适合做这种类似于爱消除的操作,因为栈帮助我们记录了 遍历数组当前元素时候,前一个元素是什么。
上述完全不对:
1、就一个函数,你搞啥公共栈;
2、视频里是简略代码实现思路,但是怎么可以直接返回栈啊喂,顺序也不对啊喂
3、拿什么back()、push_back()为啥不行我也不太清楚,不过根本不需要啊喂,直接top()、push()就可以啦
注意:reverse 基本操作具有O(n)的时间复杂度, O(n)的空间复杂度;
150. 逆波兰表达式求值
本题不难,但第一次做的话,会很难想到,所以先看视频,了解思路再去做题
题目链接/文章讲解/视频讲解:https://programmercarl.com/0150.%E9%80%86%E6%B3%A2%E5%85%B0%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B1%82%E5%80%BC.html
等等,让我来记录一下逆波兰的基本字符串吧,不然以后光看名字想不起来是啥
总而言之,就是不用日常的计算式子(也即中缀表达式),而是计算后缀表达式的结果。
注意:1、关于单引号和双引号:
还是不懂,为什么括号那题就用单引号,加减乘除就用双引号,否则就报错,不都是字符串吗,不理解
2、关于stroll()函数