給定乙個只包括 '(',')','','[',']' 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入: "()"
輸出: true
示例 2:
輸入: "(){}"
輸出: true
示例 3:
輸入: "(]"
輸出: false
示例 4:
輸入: "([)]"
輸出: false
示例 5:
輸入: ""
輸出: true
解題思路
思路:棧;
對括號進行對映,右括號為鍵,左括號為值;
如果遇到左括號,直接將其入棧。等待後面匹配處理;
如果遇到右括號,檢查棧頂的元素。若是同型別則彈出繼續處理接下的部分。否則,直接返回 false;
如果最終遍歷完成後,棧中還有元素,同樣返回 false。
**實現鄭州**醫院
class solution:
def isvalid(self, s: str) -> bool:
'''判斷是否是有效的括號
args:
str: 包含括號的字串
returns:
返回判斷的結果,滿足條件:
1. 左括號必須用相同的型別的右括號閉合。
2. 左括號必須以正確的順序閉合。
空字串可以被認為是有效的字串
返回型別為布林型
# 以棧形式儲存左括號
stack =
# 以右括號當成鍵對映對應型別的左括號
# 遍歷字串,遇左括號則進行入棧
for ch in s:
# 對字元進行判斷,是否為右括號
# 為右括號的情況下,判斷 stack 棧頂是否是同型別的左括號
# pop 出棧頂的字元
# 若 stack 為空,用 '?' 進行標記
pop_prth = stack.pop() if stack else '?'
# 如果左右括號不成對,直接返回 false
return false
else: # 左括號入棧
# stack 最終為空,則表示為有效
return not stack
leetcode 有效的括號
題目 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 1.左括號必須用相同型別的右括號閉合。2.左括號必須以正確的順序閉合。示例1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 true includ...
leetcode 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...
LeetCode 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 本題需使用棧來解決,即遍歷字串,遇到左括號...