題目來源:https://leetcode-cn.com/problems/valid-parentheses/python
給定一個只包括 '(',')','{','}','[',']'
的字符串,判斷字符串是否有效。segmentfault
有效字符串需知足:微信
注意空字符串可被認爲是有效字符串。app
示例 1:spa
輸入: "()" 輸出: true
示例 2:code
輸入: "()[]{}" 輸出: true
示例 3:blog
輸入: "(]" 輸出: false
示例 4:leetcode
輸入: "([)]" 輸出: false
示例 5:字符串
輸入: "{[]}" 輸出: true
class Solution: def isValid(self, s: str) -> bool: '''判斷是不是有效的括號 Args: str: 包含括號的字符串 Returns: 返回判斷的結果,知足條件: 1. 左括號必須用相同的類型的右括號閉合。 2. 左括號必須以正確的順序閉合。 空字符串能夠被認爲是有效的字符串 返回類型爲布爾型 ''' # 以棧形式存儲左括號 stack = [] # 以右括號當成鍵映射對應類型的左括號 prths_mapping = {'}': '{', ']': '[', ')': '('} # 遍歷字符串,遇左括號則進行入棧 for ch in s: # 對字符進行判斷,是否爲右括號 if ch in prths_mapping: # 爲右括號的狀況下,判斷 stack 棧頂是不是同類型的左括號 # pop 出棧頂的字符 # 若 stack 爲空,用 '?' 進行標記 pop_prth = stack.pop() if stack else '?' # 若是左右括號不成對,直接返回 False if prths_mapping[ch] != pop_prth: return False else: # 左括號入棧 stack.append(ch) # stack 最終爲空,則表示爲有效 return not stack
以上就是本篇的主要內容get
歡迎關注微信公衆號《書集所錄》