給定乙個只包括'(',')','','[',']'
的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入: 「()」示例 2:輸出: true
輸入: 「(){}」示例 3:輸出: true
輸入: 「(]」示例 4:輸出: false
輸入: 「([)]」示例 5:輸出: false
輸入: 「」輸出: true
class
solution
:def
isvalid
(self, s:
str)
->
bool
:# 1. 利用棧的 lifo 特性儲存所有「左邊的括號」
stack =
# 2. 以所有「右邊的括號」為key值,所有「左邊的括號」為value值,儲存括號對的關係":
"# 3. 遍歷
for char in s:
# 3.1 如果檢索到右括號
# 獲取棧中的最上面的元素並彈出
top_element = stack.pop(
)if stack else
'#'# 判斷「最後乙個」入棧的左括號是否與「第乙個」檢索到的右括號對應
!= top_element:
return
false
# 3.2 將所有檢索到的左括號壓入棧
else
:
# 4. 如果所有的左括號依次出棧(說明各括號一一對應),則表示括號匹配
return
not stack
LeetCode 20 (有效的括號) 棧
q 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 false 示例 3 輸入 輸出 false 我的想法是使用棧的思想 1.先把第乙個符號入棧...
leetcode 20 有效的括號(棧)
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5 輸入 輸...
LeetCode 20 有效的括號 棧
思路 首先用字典將三對括號儲存,遍歷字串中每個字元,遇到左括號就入棧 遇到右括號就開始判斷 是否與棧彈出的頂字元相同。如果到最後棧被清空,說明全部匹配上了,為真。class solution object defisvalid self,s stack 設定乙個列表,把該列表當做棧來使用即可 dic...