0020 - Valid Parentheses
大意描述
匹配小中大括號('('
, ')'
, '{'
, '}'
, '['
and ']'
)沒了
範例最多給成 "()[]{}"
但實際上還有類似 "{()}" 這種東西,所以不要偷懶 :Kappa:
個人想法
直接用 Stack 的觀念,每次都把暫存在 Stack 內的東西拿出來比較比較,沒有匹配就兩兩丟 Stack,符合就丟掉,直到 Stack 為空代表語法正確:
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
if len(s) < 2:
return False
barket_stack = []
for ch in s:
if len(barket_stack) == 0:
barket_stack.append(ch)
continue
temp = barket_stack.pop()
if temp == '(' and ch == ')':
continue
if temp == '[' and ch == ']':
continue
if temp == '{' and ch == '}':
continue
barket_stack.append(temp)
barket_stack.append(ch)
return len(barket_stack) == 0
看網路上的解法好像差不多也是這樣,但其實上面的寫法還可以優化,例如以 Python 來說真要拿出來看的話,用 slice 就好(list[-1]
),或是少寫一點 if。