【id】#20
【title】Valid Parentheses
【description】
Given a string containing just the characters ‘(’, ‘)’, ‘{’, ‘}’, ‘[’ and ‘]’, determine if the input string is valid.
An input string is valid if:
Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.
Example 1:
Input: “()”
Output: true
Example 2:
Input: “()[]{}”
Output: true
Example 3:
Input: “(]”
Output: false
Example 4:
Input: “([)]”
Output: false
Example 5:
Input: “{[]}”
Output: true
【idea】
使用栈,如果是左边括号就入栈。如果是右边括号,栈为空的话直接False;栈不为空,pop出栈顶元素,如果匹配则True,否则False。
最后如果栈是空的,则True,栈不是空的则为False。
【code】
class Solution(object):
def isValid(self, s):
if len(s) %2 != 0: return False
dic = {')':'(',']':'[',"}":"{"}
stack = []
for x in s:
if x in dic.values():
stack.append(x)
elif x in dic :
if stack == [] or stack.pop() != dic[x] :
return False
else: return False
return stack == []