课程名称:2周刷完100道前端优质面试真题
课程章节:第2章 前端面试技能拼图1 :数据结构和算法(上),大厂面试必考
主讲老师:双越
课程内容:
今天学习的内容包括:
2-7 判断一个字符串是否括号匹配——使用数组模拟栈来判断括号是否匹配。
课程收获:
判断一个字符串是否括号匹配
- 一个字符串s可能包含{}()[]三种括号。
- 判断s是否是括号匹配的。
- 如(a{b}c)匹配,而{a(b 或{a(b}c)就不匹配。
栈
- 先进先出。
- API:push pop length。
- 相关的:队列,堆。
- 入栈:push。
- 出栈:pop。
逻辑结构 vs 物理结构
- 栈 vs 数组
- 栈,逻辑结构。理论模型,不管如何实现,不受任何语言的限制。
- 数组,物理结构。真实的功能实现,受限于编程语言。
思路
- 遇到左括号{([就压栈。
- 遇到右括号})]就判断栈顶,匹配则出栈。
- 最后判断length是否为0
性能分析
- 时间复杂度:O(n)。
- 空间复杂度:O(n)。
划重点
- 栈。
- 逻辑结构 vs 物理结构。
- 单元测试中判断Boolean类型使用toBe()。
if(leftSymbols.includes(s)){
// 左括号,入栈
stack.push(s)
}
今天的 学习了 判断一个字符串是否括号匹配,通过数组的特性来模拟栈的功能,使用push入栈、pop出栈。遇到左括号入栈,遇到右括号判断是否出栈,最后判断length是否为0。
下一步就是 用两个栈实现一个队列算法了。今天学习就先到这里吧。
坚持打卡,坚持学习,未来可期,加油😀~