有效的括號
給定一個只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判斷字符串是否有效。
有效字符串需滿足:
- 左括號必須用相同類型的右括號閉合。
- 左括號必須以正確的順序閉合。
示例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。