leetcode.0020. Valid Parentheses
题目
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
参考答案(python3):
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
#堆栈暂存前括号,
#检索到对应的后括号,
#从堆栈中移除其前括号。
pars = [None] # 值为 [NoneType] ,长度为1
parmap = {')': '(', '}': '{', ']': '['}
for c in s:
if c in parmap and parmap[c] == pars[len(pars)-1]:# 为了保证len(pars)-1 >= 0, pars 设为 [None]
pars.pop()
else:
pars.append(c)
return len(pars) == 1 # 正确时,pars为[NoneType], len(pars)=1