用棧實現括號匹配 python

2021-10-03 10:32:46 字數 1970 閱讀 9096

《python資料結構與演算法分析》(第二版)

用python實現棧,檔名為pystack.py

# !/user/bin/env python

# coding:utf-8

# 假設列表尾部是棧頂端o(1)

class

stack

:def

__init__

(self)

: self.items =

defisempty

(self)

:#判棧空

return self.items ==

defpush

(self, item)

:#進棧

defpop

(self)

:#出棧

return self.items.pop(

)def

peek

(self)

:#獲取棧頂元素

return self.items[

len(self.items)-1

]def

size

(self)

:#獲取棧的大小

return

len(self.items)

匹配括號:

from pystack import stack

#利用棧實現括號匹配

defparchecker

(symbolstring)

: s = stack(

) balanced =

true

index =

0while index <

len(symbolstring)

and balanced:

symbol = symbolstring[index]

if symbol ==

'(':

# 如果遇到左括號,則進棧

s.push(symbol)

else

:if s.isempty():

# 如果遇到右括號,但棧為空,沒有與之匹配的左括號,不匹配

balanced =

false

else

: s.pop(

)# 如果遇到右括號,且棧不為空,則出棧,表示匹配了一對括號

index = index +

1if balanced and s.isempty():

# 遍歷完字串後,如果所有括號匹配且棧為空,則函式返回true,否則返回false

return

true

else

:return

false

普通情況:匹配符號,如:"( [ ] )"

from pystack import stack

defparchecker1

(symbolstring)

: s = stack(

) balanced =

true

index =

0while index <

len(symbolstring)

and balanced:

symbol = symbolstring[index]

if symbol in

'(['

# index()方法:str.index(str, beg=0, end=len(str))

# str:指定檢索的字串\\beg:開始索引,預設0\\end:結束索引,預設字串長度

return opens.index(

open

)== closers.index(close)

用棧實現括號匹配

假設只允許出現兩種括號 圓括號和方括號,其巢狀順序隨意,即不管 或 等都為正確匹配,但是形如 就成為錯誤的匹配。可以用 期待的緊急程度 的概念來描述 如 共8個括號,從左往右依次標代號為1 8,即第乙個 代號為1,第二個 代號為2,第三個 代號為3,依次類推 當計算機收到了第乙個括號後,期待它與第八...

用棧實現括號匹配

構造棧函式並用棧實現括號匹配 以下 include include include 建立乙個棧,用棧求出二進位制轉十進位制,轉八進位制,銷毀,清空,push,pop 用棧來求逆波蘭演算法 用字元來轉成雙精度變數 用棧來檢驗括號是否正確 建立乙個鍊錶棧,並具有插入,刪除操作 define initnu...

棧和佇列 用棧實現括號匹配

一 棧匹配 思路 借助棧來實現括號的匹配,如果碰到的是三種左括號的話,將左括號進行入棧,以為需要匹配到括號肯定都是右括號於左括號進行匹配的,所以遇到左括號直接入棧就可以了。如果遇到右括號,需要進行匹配,如果目前棧中為空的話,直接返回false,因為這個括號很明顯的多出來了。如果不為空,將棧中的乙個元...