一刷~
给定一个只包括
'('
,')'
,'{'
,'}'
,'['
,']'
的字符串s
,判断字符串是否有效。有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
思路:
使用一个栈维护s中出现的(、[、{信息,每次遇到)、]、},判断栈是否为空,或栈顶的左括号是否和右括号匹配,不匹配直接返回False。
s遍历结束后,栈为空返回True,否则返回False。
class Solution:
def isValid(self, s: str) -> bool:
st = []
for bracket in s:
if bracket in '([{':
st.append(bracket)
elif bracket == ')':
if len(st) == 0 or st[-1]!='(':
return False
st.pop()
elif bracket == ']':
if len(st) == 0 or st[-1]!='[':
return False
st.pop()
elif bracket == '}':
if len(st) == 0 or st[-1]!='{':
return False
st.pop()
return len(st) == 0