题目解析
本题可以使用 “栈” 解题。
我们可以先创建一个栈 stack,然后遍历输入串 s 的每个字符 c
- 若 stack 是空栈,则 c 直接压入 stack
- 若 stack 是非空栈,则判断:
- c 是右括号,即 c==')' || c == ']' || c == '}',则此时检查 stack.top 是否为 c 对应的左括号,则是则 stack.top 弹栈
- c 是左括号,则 c 直接压入 stack,此时 stack.size 即为一个括号深度 depth,我们此时比较保留最大的 depth。
PS:需要注意的是,若输入串s是一个合法的括号组合,那么在上面过程中,stack 栈内不会压入右括号,因为一旦遍历到右括号,都会和栈顶左括号匹配,然后栈顶元素弹出。
这样的话,stack 栈内就只会存在未被匹配的左括号,也是括号深度的体现。
当遍历完 s 后,若 s 是合法的括号串,则每个右括号都能找到匹配的左括号,因此最终 stack 应该为空。若 stack 不为空,则存在右括号没有找到对应的左括号,即s串不合法。
JavaScript算法源码
const rl = require("readline").createInt

已下架不支持订阅
1440

被折叠的 条评论
为什么被折叠?



