LeetCode 20 有效的括號

2021-10-08 18:49:14 字數 1242 閱讀 5170

給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。

有效字串需滿足:

左括號必須用相同型別的右括號閉合。

左括號必須以正確的順序閉合。

注意空字串可被認為是有效字串。

示例 1:

輸入: "()"

輸出: true

示例 2:

輸入: "(){}"

輸出: true

示例 3:

輸入: "(]"

輸出: false

示例 4:

輸入: "([)]"

輸出: false

示例 5:

輸入: ""

輸出: true

演算法原理

棧先入後出特點恰好與本題括號排序特點一致,即若遇到左括號入棧,遇到右括號時將對應棧頂左括號出棧,則遍歷完所有括號後 stack 仍然為空;

建立雜湊表 dic 構建左右括號對應關係:key 左括號,value 右括號;這樣查詢 2 個括號是否對應只需 o(1) 時間複雜度;建立棧 stack,遍歷字串 s 並按照演算法流程一一判斷。

class

solution

:def

isvalid

(self, s:

str)

->

bool

: dic =',

'[':

']',

'(':

')',

'?':

'?'}

stack =

['?'

]for c in s:

elif dic[stack.pop()]

!= c:

return

false

return

len(stack)

==1

複雜度分析

時間複雜度 o(n):正確的括號組合需要遍歷 1 遍 s

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

參考:leetcode題解

LeetCode20有效括號

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

Leetcode 20 有效括號

leetcode 20 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true pthon 列表 如 a a b 字典 如 dict not ...

leetcode 20 有效括號

怎麼減少if語句,判斷是否是某乙個值,將值存進map中,是否在map中,若在,則是 匹配用map 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出...