题目:
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足:
左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。
方法一:
利用栈的思想,先进先出
class Solution:
def isValid(self, s: str) -> bool:
dict_symbol = {')': '(', ']': '[', '}': '{'}
stack = []
for i in s:
if stack and i in dict_symbol:
if stack[-1] == dict_symbol[i]:
stack.pop()
else:
return False
else:
stack.append(i)
return not stack
方法二:
力扣上大神奇妙的思路,利用字符串的replace方法逐渐去掉合法的括号
class Solution:
def isValid(self, s):
while '{}' in s or '()' in s or '[]' in s:
s = s.replace('{}', '')
s = s.replace('[]', '')
s = s.replace('()', '')
return s == ''