Leetcode 有效的括號

2021-10-03 11:41:10 字數 1875 閱讀 8154

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

有效字串需滿足:

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

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

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

示例 1:

輸入:"()"

輸出:true

示例 2:

輸入:"(){}"

輸出:true

示例 3:

輸入:"(]"

輸出:false

示例 4:

輸入:"([)]"

輸出:false

示例 5:

輸入:""

輸出:true

使用棧的思想。

若出現乙個右括號,判斷棧頂的是否為相匹配的左括號,是則出棧,否則入棧。遇到左括號就入棧。顯然,有效的括號一定保證最終棧為空,若出現乙個右括號,且棧已空,則一定無效。

步驟

初始化括號對應關係dict=":"stack=

遍歷括號字串s[i],遍歷區間[0,len(s))

s[i]為右括號:

若棧不為空:若棧頂括號和s[i]匹配,則將棧頂退棧。否則:將當前右括號進棧。

若棧為空,返回false

若為左括號:將其入棧

返回棧是否為空

code如下:

class

solution

(object):

defisvalid

(self, s)

: dict1 =':

' s1 =

for i in s:

if i in dict1:

if s1:

if s1[-1

]== dict1[i]

: s1.pop(

)else

:else

:return

false

else

:return

not s1

可以簡化如下:

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 本題需使用棧來解決,即遍歷字串,遇到左括號...