LeetCode 020 括號匹配

2022-06-13 18:06:11 字數 2295 閱讀 1864

題目描述:

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

有效字串需滿足:

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

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

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

方法1:

遇到左括號壓入list中,遇到右括號時先判斷list是否為空,是則返回false,否則彈出乙個字元與其進行比較,匹配則continue 否則返回false   (32ms)

1

class

solution(object):

2def

isvalid(self, s):

3"""

4:type s: str

5:rtype: bool

6"""

7 lists =

8 i =0

9if len(s) == 1:

10return

false

11elif len(s) ==0:

12return

true

13while i 14 c =s[i]

15if c =='('

or c == '['

or c == '

':18

#if c < s[i+1]:19#

return false20#

()這種竟然算對,好吧

2122

23elif c == ')'

:2425if len(lists) !=0:

26 t =lists.pop()

27if t == '('

:28 i+=1

29continue

30else:31

return

false

32else:33

return

false

34elif c == ']'

:3536if len(lists) !=0:

37 t =lists.pop()

38if t == '['

:39 i+=1

40continue

41else:42

return

false

43else:44

return

false

45elif c == '}'

:4647if len(lists) !=0:

48 t =lists.pop()

49if t == '

'and stack.pop() != '

': '

9for c in

s:10

if c in

parmap:

11if parmap[c] !=pars.pop():

12return

false

13else:14

15return len(pars) == 1

時間最短:(20ms)

用丟擲異常的方式把類似)()剔除

1

class

solution(object):

2def

isvalid(self, s):

3"""

4:type s: str

5:rtype: bool

6"""

7try

:8 stack =

9for key in

s :10

if(key == '('

or key == '['

or key == '

'and stack.pop() == '{'

)):16

pass

17else:18

return

false

19if(len(stack) ==0):

20return

true

21except

indexerror:

22return

false

23return false

2018-07-22 18:48:45

LeetCode刷題筆記 020 有效的括號

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

leetcode 224 括號匹配

此題準確的說是乙個括號匹配問題,我們可以從裡到外拆解問題。每遇到乙個後括號,就把前面的提出來解決,這樣就沒有內層了,可以用棧實現,如下 class solution def calculate self,s str int iflen s 0 return 0 stack defprocess l ...

Leetcode22題括號匹配

題目 給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出n 3 生成如下 題解 本題利用回溯法中的分支限界法進行求解。進入左子樹的條件是左括號剩餘數量大於0,進入右子樹的條件是右括號剩餘數量大於0,並且左括號剩餘數量小於右括號剩餘數量。class s...