https://leetcode.com/problems/valid-parentheses/
Prerequisite Hash Map Stack
最初にどのカッコがどの 括弧閉じ にマッチしているかわかるために HashMap を作る必要がある。 この際、括弧閉じ をキーにする。
for 文で list の中を確認し、 括弧開きは stack に入れる。
stack は 最後に入れたものから出すので、 括弧開き と 括弧閉じ がマッチしていれば、 stack から pop できる。
最後に stack に何も残らなければ、 全てがマッチして True を return する。
Time complexity: O(n) Mem complexity: O(n)
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
stack = []
closeToOpen = { ')' : '(', ']' : '[', '}' : '{' }
for c in s:
if c in closeToOpen:
if stack and stack[-1] == closeToOpen[c]:
stack.pop()
else:
return False
else:
stack.append(c)
return True if not stack else False