题目描述
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例1
输入: "()"
输出: true
示例2
输入: "()[]{}"
输出: true
示例3
输入: "(]"
输出: false
示例4
输入: "([)]"
输出: false
示例5
输入: "{[]}"
输出: true
解法一
def is_valid(s: AnyStr) -> bool:
if s == '':
return True
stack = []
symbol = {'{':'}','[':']','(':')'}
for i in s:
if i in '{[(':
stack.append(i)
# 判断前后多余的 ')]}'
if stack == []:
return False
if i in ')]}':
# 括号匹配成功
if i == symbol[stack.pop()]:
continue
else:
# 括号匹配失败
return False
# True代表括号全部匹配完成 False代表后面多余的'{[('
return True if stack==[] else False
print(is_valid("{[]}"))