代码随想录训练营Day11:栈与队列part2

20.有效的括号

括号匹配是使用栈解决的经典问题
遍历字符串:遇到左括号入栈,遇到匹配右括号出栈。
匹配技巧:输入左括号的时候右括号先入栈,到时候只要判断相等就可出栈

  • 这种题可以先思考不匹配的情况:左括号多余,右括号多余,都不多余但是不匹配。所以其实是:在遍历过程中空了,或者不匹配的时候都说明不匹配。
  • 完全匹配好:遍历完后,栈空了。

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

题意理解:匹配相邻元素,消除。
思路:在删除重复项的时候,就是要知道当前遍历的这个元素,在之前是否遍历过一样的元素。所以用来储存之前遍历过的元素。
注意:由于栈里探出的元素是倒叙,所以最后需要再反转一下字符串。
疑问:??在STL里,pop()的源码函数
补充:函数的递归调用就是采用栈,每一次递归调用都会把函数的局部变量、参数值和返回地址等压入调用栈中,然后递归返回的时候,从栈顶弹出上一次递归的各项参数。

150逆波兰表达式求值

逆波兰表达式是一种后缀表达式,也相当于是二叉树中的后序遍历所谓后缀就是指运算符写在后面。平常的算式是中缀表达式
为什么计算机会使用逆波兰表达式?

  • 去掉括号后无歧义
  • 适合使用栈操作:遇到数字则入栈,遇到运算符则取出栈顶两个数字进行计算,并将结果压入栈中

你可能感兴趣的:(数据结构)