欢迎光临散文网 会员登陆 & 注册

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

2023-07-22 17:40 作者:Poyo_a  | 我要投稿


【个人想法】: s里面用左括号,入栈一个遇到的左括号匹配的右括号。

   1.只有偶数长度可以匹配上。

   2.利用栈来匹配括号: 把左括号入栈,如果匹配得上就出栈。

3.把括号遍历,然后push匹配括号入栈

4.剩下就是 两种匹配不到的情况: 1. 栈里面是空的 2. 栈顶元素和字符串里面不同(说人话就是没有匹配的括号)。

5.若相等则弹出栈顶元素;

6.最后遍历完字符串,若栈是空的。那么就说明匹配成功


完整代码:

  1. 栈用来存放遍历过的元素,所以先申明一个栈


2.利用遍历,依次访问字符串里面的元素。

 3.在遍历的过程中,入栈条件是:若栈是空的,或者字符串元素和栈顶元素不一样。

4.如果出现相等情况,那么根据题目的意思。相同元素就要出栈

else {                st.pop(); // s 与 st.top()相等的情况            }

目前就是遍历完字符串去重的代码

5.最后就是利用while循环把栈的元素拿出来,reverse一下返回

没什么好讲的,遍历字符串。遇见字符就入栈把数字运算过后再入栈。最后遍历完字符串,咱们就返回栈里面最后一个元素,就是逆波兰的计算结果了。

其中技术难点:1. 如果不是运算符转换为十进制用 stoi函数

 2.逆波兰是遇见计算符进栈,然后出来两个数字计算最后,将结果返回栈里面。遍历结束,就是咱们的计算结果。

Leetcode 栈和队列【代码随想录 part2】的评论 (共 条)

分享到微博请遵守国家法律