資料結構與演算法(七) 基於棧實現字串中的括號匹配

2021-10-05 07:02:02 字數 756 閱讀 1684

給定乙個字串,其中包括了左右括號以及其他字元,編寫程式判斷其中的左右括號是否合法。

假設只有四種括號:

左括號:['<', '(', '[',''];

定義乙個括號棧,遇到左括號入棧,遇到右括號則與當前棧頂元素比較,匹配則棧頂元素出棧,否則返回false;

最終如果所有括號匹配完畢且棧為空,則返回true。

廢話少說,直接上碼:

bracket_left = ['<', '(', '[','']

def brack_match(s):

bs = stack()

for i in range(len(s)):

if s[i] in bracket_left:

bs.push(s[i])

continue

if s[i] in bracket_right :

bs_top = bs.pull()

if (bs_top is none or

bracket_right.index(s[i]) != bracket_left.index(bs_top) ):

return false

if bs.count == 0:

return true

return false

if __name__ == "__main__":

s = "1232545"

print(brack_match(s))

資料結構與演算法(七) 棧和佇列

這是第七天,每天的開始都問自己昨天做了什麼,今天要做什麼的一種心情 1 棧 資料結構 filo,後進先出 2 佇列 lilo,先進先出 這裡順便複習以下 組合語言 王爽 中的函式呼叫棧 esp 棧指標暫存器,其記憶體中存放的是乙個指標,永遠指向系統棧最上面的乙個棧幀的頂部。push和pop指令會改變...

資料結構與演算法(七)

遞迴的高階應用 1.漢諾塔的問題 所有的盤子剛開始都放在塔座a上,要求將所有的盤子從塔座a移動到塔座c上,每次只能移動乙個盤子,任何盤子不能放在比自己小的盤子上。2.移動子樹 例 起始五個盤子在a,中間為b,需要移到c 可以首先將上邊四個移動到b,則a就剩乙個,只需一步a c 問題變為起始四個盤子在...

資料結構 七 棧

棧按照後進先出的原則儲存資料,先進入的資料被壓入棧底,最後的資料在棧頂,需要讀資料的時候從棧頂開始彈出資料。棧是只能在某一端插入和刪除的特殊線性表。進行刪除和插入的一端稱棧頂,另一端稱棧底。插入一般稱為進棧,刪除則稱為退棧。棧也稱為後進先出表。用陣列模擬stack實現部分方法。陣列實現堆疊 auth...