20 有效的括号
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
输入:s = "()"
输出:true
输入:s = "([)]"
输出:false
输入:s = "()[]{}"
输出:true
输入:s = "{[]}"
输出:true
使用栈的思想,如果是左括号就往栈里添加相应的右括号,如果是右括号就弹出栈顶元素如果这个时候和当前的右括号不一致,或者字符串还没有遍历完栈为空,或者字符串遍历完栈还不为空就说明不匹配。
class Solution:
def isValid(self, s: str) -> bool:
stack = []
for i in s:
if i == '(':stack.append(')')
elif i == '[':stack.append(']')
elif i == '{':stack.append('}')
elif not stack or stack[-1] != i:return False
else: stack.pop()
return True if not stack else False