Given a string containing just the characters '('
, ')'
, '{'
, '}'
, '['
and ']'
, determine if the input string is valid.
The brackets must close in the correct order, "()"
and "()[]{}"
are all valid but "(]"
and "([)]"
are not.
判断括号序列是否合法~维护一个栈,碰到左括号就入栈,碰到右括号时检查栈顶括号是否与当前右括号配对,如不配对,直接返回False;注意最后还得检查栈是否为空,如果栈不为空的话,说明还有没配对的括号,故应返回False
class Solution:
# @return a boolean
def isValid(self, s):
if s is None or len(s) == 0: return True
stack = []
for i in xrange(len(s)):
if s[i] in ['(', '[', '{']:
stack.append(s[i])
else:
if stack and ((s[i] == ')' and stack[-1] == '(') or (s[i] == ']' and stack[-1] == '[') or (s[i] ==
'}' and stack[-1] == '{')):
stack.pop()
else:
return False
return len(stack) == 0