leetcode有效的括號

2021-10-03 22:29:39 字數 1603 閱讀 4733

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

有效字串需滿足:

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

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

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

示例1輸入: 「()」

輸出: true

示例2輸入: 「(){}」

輸出: true

示例3輸入: 「(]」

輸出: false

示例4輸入: 「([)]」

輸出: false

示例5輸入: 「」

輸出: true

這裡可以用到棧的特點:

class

solution

(object):

defisvalid

(self, s)

:"""

:type s: str

:rtype: bool

"""lis1=

["()",""

,"{}"

] lis2=

for i in s:

ifnot lis2 :

elif

(lis2[-1

]+i)

in lis1:

lis2.pop(

)else

:return lis2==

剛開始我沒有注意到空字元也可以為true,結果在前面還判斷了一下,畫蛇添足了。

還可以用字典的對應關係:

class

solution

:def

isvalid

(self, s:

str)

->

bool

: dic=',

'[':

']'}

lis1=

for i in s:

if lis1==

:elif dic.get(lis1[-1

])==i:

lis1.pop(

)else

:return lis1==

用字典的另一種思路:

class

solution

:def

isvalid

(self, s:

str)

->

bool

: match_dict=',

'[':

']',

'?':

'?'}

stack=

['?'

]for i in s:

elif match_dict[stack.pop()]

!=i:

return

false

return

len(stack)

==1

這種思路就是:如果出現右半個括號,可以加入到stack中,否則判斷 i 能不能和最後乙個右括號組成一對,能則順帶刪去右括號,否則返回false。若執行到最後,判斷是否已將所有右括號刪除乾淨。

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