栈 --面试经典150题
简化路径(medium)
做题过程
思路是对的,主要就是用栈和分类讨论,但是还有熟悉语言特性什么的做的不好。
算法概述
本题要求为简化文件路径。用 栈 管理输入的复杂路径。
- 时间复杂度为O(n)
- 空间复杂度为O(n)
JAVA
1 | class Solution { |
总结
最重要的是 先用 split('\')
把文件路径分为一级一级的部分,这样会极大简化后续的分类工作、还有像 边删节栈边拼接字符串 的技巧也非常重要。
还有:
- 一定要记得用
equals()
- C++也有面向STL的
split(string, "\")
逆波兰表达式
做题过程
需要用正则判断数字,而且还是对deque的操作不熟悉。
算法概述
本题要求为计算逆波兰表达式。使用 栈 即可。
- 时间复杂度为O(n)
- 空间复杂度为O(n)
JAVA
1 | class Solution { |
重要实例方法及属性(JAVA)
poll()
和pollLast()
:前者是 队列的入队 ,后者才是 栈的弹出栈顶 。
总结
对API和re都不熟悉,很麻烦,必须整理总结一下。
基本计算器(hard)
做题过程
就是栈,但还要带括号时的优先级,比较麻烦。
算法概述
本题为数据结构课程的基本例题(除去乘除法,还更加简单)。但是还有更逆天的解决方法。
JavaScript
1 | /** |
总结
对于javascript这样的语言,解析字符串的优先级很高,因为是浏览器的脚本语言,所以会提供这样一个不安全但有效的接口。
真的逆天🚀
- Title: 栈 --面试经典150题
- Author: tobegold574
- Created at : 2024-12-22 19:35:17
- Updated at : 2025-03-26 14:58:13
- Link: https://tobegold574.me/2024/12/22/栈-面试经典150题/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments