题目描述
现有一字符串仅由 ‘(‘,’)’,'{‘,’}’,'[‘,’]’六种括号组成。
若字符串满足以下条件之一,则为无效字符串:
①任一类型的左右括号数量不相等;
②存在未按正确顺序(先左后右)闭合的括号。
输出括号的最大嵌套深度,若字符串无效则输出0。
0≤字符串长度≤100000
输入描述:
一个只包括 ‘(‘,’)’,'{‘,’}’,'[‘,’]’的字符串
输出描述:
一个整数,最大的括号深度
示例1 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
[]
输出
1
说明
有效字符串,最大嵌套深度为1
示例2 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
([]{()})
输出
3
说明
有效字符串,最大嵌套深度为3
示例3 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
(]
输出
0
说明
无效字符串,有两种类型的左右括号数量不相等
示例4 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
([)]
输出
0
说明
无效字符串,存在未按正确顺序闭合的括号
示例5 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
)(
输出
0
说明
无效字符串,存在未按正确顺序闭合的括号。
注意题意:字符串仅由 ‘(‘,’)’,'{‘,’}’,'[‘,’]’六种括号组成
def maxDepth(s: str):
left = ['[', '(', '{']
right = [']', ')', '}']
maxdepth = 0
stack = []
try:
if len(s) % 2 != 0:
return 0
for i in s:
if i in left:
stack.append(i)
if len(stack) > maxdepth:
maxdepth = len(stack)
elif i in right:
temp = stack.pop(-1)
if right.index(i) != left.index(temp):
return 0
else:
return 0
except:
return 0
return maxdepth
print(maxDepth("{[]([])}"))
print(maxDepth("{[]([{}])}"))
print(maxDepth("{[]([{}])}{()}"))
print(maxDepth("}{"))
print(maxDepth("([)]"))
print(maxDepth("(]"))
print(maxDepth("([]{()})"))
# 输出
# 3
# 4
# 4
# 0
# 0
# 0
# 3
基本满足列举的测试用例,自定义的测试用例也满足,应该没问题
如有问题请各位指出



