題目
給定一個只包括 '(',')','{','}','[',']' 的字串 s ,判斷字串是否有效,
有效字串需滿足:
- 左括號必須用相同型別的右括號閉合,
- 左括號必須以正確的順序閉合,
示例1
輸入:s = "()"
輸出:true
示例2
輸入:s = "()[]{}"
輸出:true
示例3
輸入:s = "(]"
輸出:false
示例4
輸入:s = "([)]"
輸出:false
示例5
輸入:s = "{[]}"
輸出:true
提示
(1) <= s.length <= 104
(2)s 僅由括號 '()[]{}' 組成
解題思路
(1)判斷字串的長度,如果為奇數,則回傳False
(2)構造pairs字典用于匹配括號的左右兩邊,右邊為key,左邊為value
(3)創建空串列stack,用來存盤字符中的左括號,用于與右括號進行匹配
(4)回圈輸入字串的每一個字符,記ch
(5)判斷ch在pairs中時,如果stack是空串列或者,stack的最后一個字串不等于ch的左括號回傳False,否則將最后一個字符移除
(6)如果ch不在pairs中,則判斷為左括號,增加斤stack中
(7)最后如果stack為空輸出True,不為空輸出False
代碼
class Solution:
def isValid(self, s: str) -> bool:
if len(s) % 2 == 1:
return False
pairs = {
")": "(",
"]": "[",
"}": "{",
}
stack = list()
for ch in s:
if ch in pairs:
if not stack or stack[-1] != pairs[ch]:
return False
stack.pop()
else:
stack.append(ch)
return not stack
Reference
題庫 - 力扣 (LeetCode) 全球極客摯愛的技術成長平臺
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/305502.html
標籤:其他
上一篇:關于Qt5.14,設定QTextEdit添加背景圖問題
下一篇:C++認知繼承
