題目描述:
給定乙個只包括'('
,')'
,''
,'['
,']'
的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
方法1:
遇到左括號壓入list中,遇到右括號時先判斷list是否為空,是則返回false,否則彈出乙個字元與其進行比較,匹配則continue 否則返回false (32ms)
1class
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)
用丟擲異常的方式把類似)()剔除
1class
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...