棧和佇列 20 有效的括號

2021-10-04 00:03:05 字數 575 閱讀 1009

遇到左括號入棧,遇到右括號時將對應棧頂左括號出棧,這樣遍歷完之後,棧應為空。

建立雜湊表構建左右括號對應關係,用於配對。

邊界問題:棧為空時,無法執行pop()操作,因此需要在棧中提前放置乙個無關元素。當完成遍歷時,棧中元素應只有乙個,保證沒有未出棧的左括號,如』()(』。

流程:遍歷字串,如果遇到左括號,則入棧 push;

返回並判斷棧中元素是否只剩乙個。

class

solution

:def

isvalid

(self, s:

str)

->

bool

: stack =

['?'

] dic =',

'?':

'?'}

for c in s:

if c in dic:

elif c != dic[stack.pop()]

:return

false

return

len(stack)

==1

20 有效的括號(棧)

判斷括號是否匹配,思路是 1 需要乙個輔助資料結構棧,將字串從第乙個字元開始逐個遍歷,如果該字元是左括號,如 則判斷該字元是否與棧頂的括號匹配。如果匹配,進入下一輪迴圈,即判斷下乙個字元。如果不匹配,直接退出函式,返回false,即無效括號。3 如果字串中每乙個字元都遍歷完了,最後看棧是否為空,如果...

佇列 棧 有效的括號

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

佇列 棧 有效的括號

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