括号检查
题目
现有一字符串 仅由 '(',')','{','}','[',']'
六种括号组成,若字符串满足以下条件之一,则为无效字符串
-
任意类型的左右括号数量不相等
-
存在未按正确顺序(先左后右)闭合的括号,
输出括号的最大嵌套深度
若字符串无效则输出0
0 <= 字符串长度 <= 100000
输入
一个只包括 '(',')','{','}','[',']'
的字符串
输出
一个整数 ,最大的括号深度
示例一
输入
[]
输出
1
说明
有效字符串最大嵌套深度为 1
示例二
输入
([]{()})
输出
3
说明
有效字符串最大嵌套深度为 3
示例三
输入
(]
输出
0
说明
无效字符串 有两种括号左右数量不相等
示例四
输入
([)]
输出
0
说明
无效字符串存,在未按正确顺序闭合的字符串
示例五
输入
)(
输出
0
说明
无效字符串存,在未按正确顺序闭合的字符串
解题思路
该题是检查一个字符串中括号的匹配情况。
可以使用一个栈,遍历字符串的每一个字符:
如果遍历到的字符是左括号,将它压入栈中,并且计算栈的最大深度。
如果遍历到的字符是右括号:
如果栈为空,那么返回 0,因为没有左括号与它对应。
如果栈不为空,从栈顶取出一个字符,如果取出的字符与当前右括号匹配,那么弹出栈顶元素,否则返回 0。
核心知识点
-
判断括号匹配问题的解法,可以使用栈结构进行实现。
具体的实现方式是: -
遍历每个字