1 题目描述
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
2 解题思想
引入栈的思想:
遍历字符串
1)左括号全都入栈
2)遇到右括号就出栈,然后匹配是否合适
3)最后判断栈内元素是否为空(左括号元素和右括号完全匹配)
3 代码实现
class Solution:
def isValid(self, s: str) -> bool:
stack=[]
s = "".join(s.split())
if not s:
return True
else :
for i in s:
if ( i=='(' or i=='[' or i=='{'):
stack.append(i)
elif (i==')' or i==']' or i=='}'):
if not stack:
return False
l=stack.pop()
if i==')':
if l!="(":
return False
elif i==']':
if l!="[":
return False
elif i=='}':
if l!="{":
return False
else:
return False
if not stack:
return True
else:
return False