有效的括号
题目描述
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
解题方法
方法一:
class Solution:
def isValid(self, s: str) -> bool:
list_s = list(s)
dicts = {')':'(', '}':'{', ']':'['}
j=1
def find_k(list_s):
if not list_s:
return True
if len(list_s)%2==1:
return False
for i, str in enumerate(list_s):
if str == ')' or str == '}' or str==']':
if list_s[i-1]==dicts[str]:
list_s = list_s[:i-1]+list_s[i+1:]
return find_k(list_s)
else:
return False
elif i==len(list_s)-1:
return False
return find_k(list_s)
方法二:
class Solution:
def isValid(self, s: str) -> bool:
while( '()' in s or '[]' in s or '{}' in s):
s = s.replace('{}', '')
s = s.replace('[]', '')
s = s.replace('()', '')
return s == ''
方法三:
出栈入栈方法
class Solution:
def isValid(self, s: str) -> bool:
dicts = {'(':')', '{':'}', '[':']'}
stack = []
for ss in s:
if ss in dicts.keys():
stack.append(ss)
continue
if len(stack) == 0 or ss!=dicts[stack.pop()]: return False
return stack==[]