Leetcode 栈和队列【代码随想录 part2】

【个人想法】: s里面用左括号,入栈一个遇到的左括号匹配的右括号。
1.只有偶数长度可以匹配上。
2.利用栈来匹配括号: 把左括号入栈,如果匹配得上就出栈。
3.把括号遍历,然后push匹配括号入栈
4.剩下就是 两种匹配不到的情况: 1. 栈里面是空的 2. 栈顶元素和字符串里面不同(说人话就是没有匹配的括号)。
5.若相等则弹出栈顶元素;
6.最后遍历完字符串,若栈是空的。那么就说明匹配成功
完整代码:


栈用来存放遍历过的元素,所以先申明一个栈
2.利用遍历,依次访问字符串里面的元素。
3.在遍历的过程中,入栈条件是:若栈是空的,或者字符串元素和栈顶元素不一样。
4.如果出现相等情况,那么根据题目的意思。相同元素就要出栈
else { st.pop(); // s 与 st.top()相等的情况 }
目前就是遍历完字符串去重的代码
5.最后就是利用while循环把栈的元素拿出来,reverse一下返回


没什么好讲的,遍历字符串。遇见字符就入栈把数字运算过后再入栈。最后遍历完字符串,咱们就返回栈里面最后一个元素,就是逆波兰的计算结果了。
其中技术难点:1. 如果不是运算符转换为十进制用 stoi函数
2.逆波兰是遇见计算符进栈,然后出来两个数字计算最后,将结果返回栈里面。遍历结束,就是咱们的计算结果。