20有效的括號

2021-10-03 20:33:26 字數 677 閱讀 6102

給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。"" "(){}"返回true。使用棧,後進先出,內部消化。

遇到左括號入棧,遇到右括號時將對應棧頂左括號出棧,根據雜湊表建立的左右括號的對應關係,判斷是否為對應的括號,最後遍歷完所有括號後 stack 仍然為空;

乙個細節:若第乙個字元是右括號,則要出棧,而剛開始棧為空,pop則會越位,所以stack賦初始值。同樣,對該初始值在字典裡也要加入key:#,value:#。最後返回len(stack)==1判斷是否為有效的括號組合。

class

solution

:def

isvalid

(self,s)

: dic=',

'[':

']',

'@':

'@'}

stack=

['@'

]for c in s:

elif dic[stack.pop()]

!=c:

return

false

return

len(stack)==1

#避免最後還有乙個左括號的情況,所以不直接return true

時間複雜度o(n):遍歷一遍字串

空間複雜度o(n):雜湊表和棧使用線性的空間

20 有效括號

1.題目描述 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。2.示例 輸入 輸出 true輸入 輸出 false3.思路 可以採用棧來解決,第一步 判斷棧是否空,為空則進乙個括號,若不為空,則判斷當前括號和棧頂元素是否匹配,不...

20 有效的括號

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...

20 有效的括號

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...