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
Maintain a stack if the element on the top of the stack can be eliminated by the input element, then pop out the element, else append the input element. If the length of the stack is not 0, return false, else True
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
if not s:
return True
stack=[s[0]]
dic={"(":")","{":"}","[":"]"}
for i in range(1,len(s)):
if stack and stack[-1] in dic and dic[stack[-1]]==s[i]:
stack.pop()
else:
stack.append(s[i])
return len(stack)==0