思路:
首先用字典將三對括號儲存,遍歷字串中每個字元,遇到左括號就入棧;遇到右括號就開始判斷:是否與棧彈出的頂字元相同。
如果到最後棧被清空,說明全部匹配上了,為真。
class複雜度分析:另:leetcode有一點坑的是,在下列情況:solution(object):
defisvalid(self, s):
stack= #
設定乙個列表,把該列表當做棧來使用即可
dic=
','[
':']
'} #
使用字典儲存括號
new_dic = #
由於不能直接從value查詢到對應的key,採用了字典反轉
for char in
s:
if char in dic.keys(): #
左括號就入棧
elif char in dic.values(): #
有右括號的話就進行比較
if stack== or new_dic[char]!=stack.pop(): #
分別對應'()]'以及')
'))
if stack== or new_dic[char]!=stack.pop(): #分別對應'()]'以及'{]'兩類情況
如果只考慮匹配寫為 if new_dic[char]!=stack.pop():
在遇到'()]'時,會因為stack已經empty而無法繼續pop出新元素而語法報錯,但示例中並未給出'()]'此類例子。
遇到這種情況時,讀者可能會反覆對照題目給出的示例,覺得理應通過而百思不得其解。
大家coding時也要仔細,注意因為額外例子所導致的語法錯誤。
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 輸入 輸出...