'''
给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
'''
'''方法1
def isValid(s):
while '{}' in s or '[]' in s or '()' in s:
s = s.replace('{}','')
s = s.replace('()','')
s = s.replace('[]','')
return s == ''
s = "{[]}"
print(isValid(s))
'''
def isValid(s):
# hashMap = {')':'(',']':'[','}':'{'}
hashMap = {'(':')' , '[':']' , '{':'}' }
stack = []
for chr in s:
if chr in hashMap:
# 如果s里面的值在hashmap的key里面,则将值放到stack列表中(栈)
stack.append(hashMap.get(chr))
# 判断stack不为空,并且stack最后一位是否和s中的当前位一致,如果一致,则将stack的栈顶数据去除,如果最终stack为空,则表示是对称的
elif stack and stack[-1] == chr: # 需要判断stack不为空,不然stack[-1]可能不存在会报错
stack.pop()
# 如果不满足以上条件,则直接返回错误
else:
return False
return not stack # python机制:变量不为空或者不为None,取true;not stack,若stack为空,则not stack返回true;若stack不为空,则not stack返回false
s = "{[]}"
print(isValid(s))