LeetCode 20 有效的括號 棧

2022-09-08 22:18:24 字數 1061 閱讀 3787

思路:

首先用字典將三對括號儲存,遍歷字串中每個字元,遇到左括號就入棧;遇到右括號就開始判斷:是否與棧彈出的頂字元相同。

如果到最後棧被清空,說明全部匹配上了,為真。

class

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(): #

分別對應'()]'以及')

'))

複雜度分析:另:leetcode有一點坑的是,在下列情況:

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 輸入 輸出...