@[toc](leetcode-20. 有效的括號)
傳送門
給定乙個只包括'('
,')'
,''
,'['
,']'
的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入: "()"
輸出: true
示例 2:
輸入: "(){}"
輸出: true
示例 3:
輸入: "(]"
輸出: false
示例 4:
輸入: "([)]"
輸出: false
示例 5:
輸入: ""
輸出: true
參考官方題解棧的思想如果當前沒有匹配到開和關,就將開的符號推入棧中,如果遇到關符號就將棧中的符號推出棧頂元素,匹配是不是一對的,如果不是就返回false結束,否則直到遍歷完全部。最後返回棧是不是空的,如果為空說明是有效的括號時間複雜度是 o(n
)o(n)
o(n)
,從頭是所有字串中字元數量的總和。
空間複雜度o(n
)o(n)
o(n)
,當我們將所有的開括號都推到棧上時以及在最糟糕的情況下,我們最終要把所有括號推到棧上。例如
((((((((((
執行用時:48ms
48 ms
48ms
:# 建立乙個對應的開閉符號':
'# 建乙個棧
stack=
#遍歷每個字元
for char in s:
#如果存在對應的字典的鍵時
#取出棧頂元素,如果為空則返回#
top=stack.pop(
)if stack else
'#'#如果不存在,則返回無效
!=top:
return
false
#如果不是閉符號,則新增到棧種
else
:#stack為空時,說明都匹配完了
#stack不為空的時候,說明false。
return
not stack
leetcode 有效括號(20)
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 true 官方給出了不同的解答方式,在此處,我只進行1種方式的描...
20 有效的括號 leetcode
給定乙個只包括 的字串,判斷字串是否有效。有效的字串需要滿足 輸入 輸出 true示例2 輸入 輸出 true示例3 輸入 輸出 false示例4 輸入 輸出 false示例5 輸入 輸出 true演算法設計與分析 class solution def isvalid self,s str bool...
LeetCode20有效括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...