课程名称: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。
下一步就是 用两个栈实现一个队列算法了。今天学习就先到这里吧。
坚持打卡,坚持学习,未来可期,加油😀~

点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
