栈的应用
用栈来保存不重复的字符,用栈顶元素和新元素作对比判断是否重复。有点类似于祖玛游戏中,如果消除一大串相同颜色的珠子后,珠子左右如果颜色相同再消失,不相同就连在一起的场景。
🥉 1047. 删除字符串中的所有相邻重复项
相比于上面的题目,考虑的就多一点,但理解了并不难:
- 没遇到左括号之前,就根据加减号计算好了
- 遇到左括号的时候,把左括号之前的总和、左括号前面的符号存到栈里面。把res(存总和变量)和sign(符号标记)分别变成0、1(初始值)
- 没遇到右括号时,继续按照加减号计算
- 遇到右括号的时候,说明括号里面的计算完了。式子的综合应该等于括号前的和
+/-
括号里面的和。因为栈顶为括号的符号,所以res=res*stack.pop()
,给括号里面的结果确定正负,然后再加上括号前的值res+=stack.pop()
🥇 224. 基本计算器
相比于上面的计算器,这道题就容易很多了,根本不需要考虑很多!
🥈 150. 逆波兰表达式求值