前提摘要:
栈Stack:
- push():将一个元素压入栈顶。
- pop():移除并返回栈顶元素。
- peek():查看栈顶元素,但不从栈中移除。
- empty():检查栈是否为空。
队列queue:
- add():添加元素
- poll():移除并返回队列头部的元素,如果队列为空,则返回
null
。 - peek():返回队列头部的元素但不移除,如果队列为空,则返回
null
。 - isEmpty():检查队列是否为空。
232 用栈实现队列
题目链接:. - 力扣(LeetCode)
文章链接:代码随想录
思路:使用两个栈实现一个队列,使用两个栈相互配合,来逆转其中一个栈的顺序
225 用队列实现栈
题目链接:. - 力扣(LeetCode)
文章链接:代码随想录https://leetcode.cn/problems/implement-stack-using-queues/description/代码随想录
思路:
20. 有效的括号
题目链接:. - 力扣(LeetCode)
文章链接:代码随想录
思路:
1. 初始化栈:创建一个空栈用来存放待匹配的闭括号。
2. 遍历字符串:
- 如果是开括号:将对应的闭括号压入栈中。
- 如果是闭括号:
- 如果栈非空,弹出栈顶元素并与当前字符比较。如果不匹配,字符串无效。
- 如果栈为空,表示没有对应的开括号,因此字符串无效。
3. 结束验证:如果栈为空,则所有括号正确匹配,字符串有效。如果栈中仍有元素,表示有未匹配的开括号,字符串无效。
1047 删除字符串中的所有相邻重复项
题目链接:. - 力扣(LeetCode)
文章链接:代码随想录
思路:
1. 初始化栈:创建一个空栈来存储还未被删除的字符。
2. 遍历字符串:
- 如果栈为空,将字符推入栈。
- 如果栈不为空,比较栈顶字符与当前字符:
- 如果相同,说明发现了相邻重复项,将栈顶字符弹出(删除两个相邻的重复字符)。
- 如果不同,将当前字符推入栈。
3. 构建结果字符串:
遍历结束后,栈中剩下的字符就是删除所有相邻重复项后的结果。将这些字符从栈中弹出并拼接起来,得到最终的字符串。