python stack 括號匹配
阿新 • • 發佈:2018-12-10
LeetCode 20 括號匹配
先建立一個空棧,左邊括號用left表示,右邊括號用right表示,驗證s中的字元是否與left匹配,如果是則壓入棧中,判斷是否與右邊括號匹配,如果棧不為空並且左右括號不匹配則返回False,否則匹配彈出棧中元素,如果棧中的元素不為left或者right中的值,返回False,最後判斷棧中是否有元素,沒有則匹配成功
class Solution(object): def isValid(self, s): """ :type s: str :rtype: bool """ left={'(','{','['} right={')','}',']'} stack=[] for x in s: if x in left: stack.append(x) elif x in right: if not stack or not (1<=ord(x)-ord(stack[-1])<=2): return False stack.pop() else: return False return not stack