1. 程式人生 > >python stack 括號匹配

python stack 括號匹配

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