给出一个仅包含字符’(‘,’)‘,’{‘,’}‘,’[‘和’]',的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。
题解:
利用一个栈,当一个字符是"]“,”}“,”)",判断栈顶元素是不是对应的左半边,如果是则出栈,如果不是,则继续进栈
注意:当是空栈时,直接入栈即可
def isValid(s):
stack = []
s_list = list(s)
for value in s_list:
if len(stack) == 0:
stack.append(value)
continue
if value == ']' and stack[-1] == '[':
stack.pop()
elif value == '}' and stack[-1] == '{':
stack.pop()
elif value == ')' and stack[-1] == '(':
stack.pop()
else:
stack.append(value)
if len(stack) == 0:
return True
else:
return False