判斷括號是否匹配 堆疊

2021-08-31 06:45:34 字數 992 閱讀 5161

1.有效的括號

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

有效字串需滿足:

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

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

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

示例 1:

輸入: 「()」

輸出: true

示例 2:

輸入: 「(){}」

輸出: true

示例 3:

輸入: 「(]」

輸出: false

示例 4:

輸入: 「([)]」

輸出: false

示例 5:

輸入: 「」

輸出: true

思路:這個可以用堆疊的思想去解決,先設立乙個棧準備放東西,然後把括號組成乙個鍵值對,然後往棧裡面push值value,再判斷進來的是否是括號的右邊匹配部分,如果不是匹配的,就返回false,如果一開始就不在值裡面,就相當於一開始就不是左括號,那一定是錯誤的false

class

solution

:def

isvalid

(self, s)

:"""

:type s: str

:rtype: bool

"""stack =

dict="

:"for char in s:

if char in

dict

.values():

elif char in

dict

.keys():

if stack ==

ordict

[char]

!= stack.pop():

return

false

else

:return

false

return stack ==

判斷括號是否匹配

日期 2009.6.20 問題 設計乙個演算法,判斷乙個算術表示式中的括號是否配對。算術表示式儲存在帶頭結點的單迴圈鍊錶中,每個結點有兩個域 ch和 link 其中ch 域為字元型別。1 思路 根據括號的特點 進行匹配的時候,第乙個做括號最後乙個匹配,最後乙個左括號與第乙個右括號相匹配,恰好可以使用...

利用棧判斷括號是否匹配

輸入格式如下 3 輸出格式如下 yes no yes 演算法描述 利用棧來判斷 注意出棧時,考慮棧是否為空 最後匹配的結果應該是棧為空 1 從左到右進行掃瞄字元 2 若為左括號 else public boolean isbalanced string str elseelseelse end fo...

DS堆疊 括號匹配

問題 c ds堆疊 括號匹配 時間限制 1 sec 記憶體限制 128 mb 提交 396 解決 343 提交 狀態 討論版 題目描述 處理表示式過程中需要對括號匹配進行檢驗,括號匹配包括三種 和 和 例如表示式中包含括號如下 1234 5678 9101112 從上例可以看出第1和第2個括號匹配,...