20. 有效的括号

匹配左括号的时候,右括号先入栈,就只需要比较当前元素和栈顶相不相等就可以了,比左括号先入栈代码实现要简单的多了

1047. 删除字符串中的所有相邻重复项

这道题目就像是我们玩过的游戏对对碰,如果相同的元素放在挨在一起就要消除。

可能我们在玩游戏的时候感觉理所当然应该消除,但程序又怎么知道该如果消除呢,特别是消除之后又有新的元素可能挨在一起。

此时游戏的后端逻辑就可以用一个栈来实现(我没有实际考察对对碰或者爱消除游戏的代码实现,仅从原理上进行推断)。

本题要删除相邻相同元素,其实也是匹配问题,相同左元素相当于左括号,相同右元素就是相当于右括号,匹配上了就删除。

那么再来看一下本题:可以把字符串顺序放到一个栈中,然后如果相同的话 栈就弹出,这样最后栈里剩下的元素都是相邻不相同的元素了。

是不是和 20. 有效的括号 很像。

150. 逆波兰表达式求值

本题中每一个子表达式要得出一个结果,然后拿这个结果再进行运算,那么这岂不就是一个相邻字符串消除的过程,和 1047.删除字符串中的所有相邻重复项 中的对对碰游戏是不是就非常像了。

所以我把这题也归入到了字符匹配的分类中了,因为从思路上看这三题都是大同小异的。

1047.删除字符串中的所有相邻重复项 是差不错的,只不过本题不要相邻元素做消除了,而是做运算。