20. 有效的括号
- 这道题,一望即知(没看视频),就栈 —— 栈可以检测顺序
- 广义的左括号进栈时,直接以广义右括号的形式存储,方便后续比较和消消乐。
- 减枝思路:正确的字符串长度必是偶数,奇数直接pass
1047. 删除字符串中的所有相邻重复项
- 字符串模拟栈
- 这里的栈,栈顶永远就是上一个元素,消掉后也能维持这一规律。
- 这页是用栈比双指针的优势,用双指针,一旦两个元素消除后,指针都没地方去。
- 我们可以用字符串去模拟栈的行为 -> 最后就不用由stack转string
- 栈,特别擅长处理相邻元素的消除操作(包括匹配,计算等等)
150. 逆波兰表达式求值
- 逆波兰表达式是一种后缀表达式,需要用栈计算。
- 对于一个数学表达书 (1+2) x (3+4),其在计算机中是这个二叉树的中序遍历。后缀表达式就是二叉树的后序遍历(左右中)。
- 中序遍历是人类看到的,但其不包含计算优先级(先乘除后加减);而后续遍历没有这个问题,这就是计算机采用后序遍历存储表达式的原因。
- 本题核心思路:遇到数字就入栈,遇到计算符就从栈中取出元素进行计算。
- 本题本质上和之前遇到的“消消乐”问题一样,就是2个数字遇到一个符号,然后消除。
- 本题别忘了类型转换:char - int。