leetcode---------有效的括號(棧)

解法:

看到這些判斷左右對稱的題,首先想到的就是用棧。

首先指定括號間的配對關係,例如 “()”,“[ ]”,“{ }”。用一個變量map_dict裝着,讓程序知道“)”和“(”,“]”和“[”是配對的。

然後把不在map_dict的key中的字符放如棧stack中,等待匹配。

若遍歷到map_dict的key中的字符(右括號),則把棧頂字符出棧,判斷出棧的這個字符是否是遍歷到的右括號所對應的左括號。

是則繼續循環,不是則直接返回False。

最後,要是有效的括號字符,棧最後一定爲空,因爲有多少個左括號,就有多少個右括號匹配。若非空,則返回False

class Solution(object):
    def isValid(self, s):
        stack = []
        map_dict = {')':'(',']':'[','}':'{'}
        for char in s:
            if char in map_dict:
                top_char = stack.pop()
                if top_char != map_dict[char]:
                    return False
            else:
                stack.append(char)
        return not stack

s = '(([]))'
ss = Solution()
print(ss.isValid(s))  #True

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章