【LeetCode】python列表模擬棧操作結合哈希映射簡單實現“有效的括號”

有效的括號

給定一個只包括 '('')''{''}''['']' 的字符串,判斷字符串是否有效。
有效字符串需滿足:
  1. 左括號必須用相同類型的右括號閉合。
  2. 左括號必須以正確的順序閉合。
示例1:
輸入: "()"
輸出: true
示例2:
輸入: "()[]{}"
輸出: true
示例3:
輸入: "(]"
輸出: false
示例4:
輸入: "([)]"
輸出: false
示例5:
輸入: "{[]}"
輸出: true

注意:空字符串可被認爲是有效字符串。

題解:
class Solution:
    def isValid(self, s: str) -> bool:
        stack = []
        mapping = {')': '(', ']': '[', '}': '{'}
        for char in s:
            if char in mapping:
                top_element = stack.pop() if stack else '#'
                if mapping[char] != top_element:
                    return False
            else:
                stack.append(char)
        return not stack
分析:

由題意知,判斷字符串的有效括號對,需要用到棧,通過先進棧後出棧的方式達到準確判斷括號匹配順序的目的,在python中,可以用列表實現棧式存取,列表的pop()方法用於移除列表中的一個元素(默認最後一個元素),並且返回該元素的值。該題中,可以將括號的匹配規則存儲爲哈希映射,右括號作爲key,左括號作爲value,遍歷字符串的時候,遇到左括號時就執行入棧操作,遇到右括號則執行出棧操作(棧非空),同時通過哈希映射比較出棧的左括號與該右括號是否匹配,不匹配則返回False,否則返回True。

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