最大括号深度

567 篇文章

已下架不支持订阅

473 篇文章

已下架不支持订阅

题目解析

本题可以使用 “栈” 解题。

我们可以先创建一个栈 stack,然后遍历输入串 s 的每个字符 c

  • 若 stack 是空栈,则 c 直接压入 stack
  • 若 stack 是非空栈,则判断:
  1. c 是右括号,即 c==')' || c == ']' || c == '}',则此时检查 stack.top 是否为 c 对应的左括号,则是则 stack.top 弹栈
  2. c 是左括号,则 c 直接压入 stack,此时 stack.size 即为一个括号深度 depth,我们此时比较保留最大的 depth。

PS:需要注意的是,若输入串s是一个合法的括号组合,那么在上面过程中,stack 栈内不会压入右括号,因为一旦遍历到右括号,都会和栈顶左括号匹配,然后栈顶元素弹出。

这样的话,stack 栈内就只会存在未被匹配的左括号,也是括号深度的体现。

当遍历完 s 后,若 s 是合法的括号串,则每个右括号都能找到匹配的左括号,因此最终 stack 应该为空。若 stack 不为空,则存在右括号没有找到对应的左括号,即s串不合法。

JavaScript算法源码

const rl = require("readline").createInt

已下架不支持订阅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员阿甘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值