棧應用之 括號匹配問題(Python 版)

2022-08-19 02:39:09 字數 921 閱讀 8966

檢查括號是否閉合

1

defcheck_parens(text) :2#

括號匹配檢查函式,text 是被檢查的正文串

3 parens = "

(){}

"4 open_parens = "

(":"67

defparentheses(text) :8#

括號生成器,每次呼叫返回text裡的下一括號及其位置

9 i.text_len =0,len(text)

10while

true :

11while i < text_len and text[i] not

inparens :

12 i += 1

13if i >=text_len :

14return

15yield

text[i],i

16 i += 1

1718 st = sstack() #

建立棧 st

1920

for pr , i in parentheses(text) : #

對text裡各括號和位置迭代

21if pr in open_parens : #

開括號,壓棧並繼續

22st.push(pr)

23elif st.pop() != opposite[pr] : #

閉括號 若匹配失敗就退出

24print("

unmatching is found at

",i,"

for"

,pr)

25return

false26#

else : 匹配成功什麼也不做

棧的應用之括號匹配問題

題目描述 如果乙個括號序列中的每個左括號都有乙個右括號與之完成配對,這個序列就是乙個合法的括號匹配序列。例如 char a abc 左右括號匹配不正確 char b abc 右括號多於左括號 char c abc 左括號多於右括號 char d abc 左右括號匹配正確 請用一種資料結構判斷出以上四...

棧的應用之括號匹配問題

include include define size 10 typedef char stackelemtype typedef struct seqstack void initstack seqstack s intpush seqstack s,stackelemtype x 順序棧進棧運算...

棧的應用之括號匹配

在許多正文中都有括號,特別是在表示程式 數學表示式的正文片段裡,括號有正確配對問題。作為例子,下面考慮python程式裡的括號,在這裡可以看到 不難總結出檢查括號配對的原則 在掃瞄正文過程中,遇到的閉括號應該與此前最近遇到且尚未獲得匹配的開括號配對。如果最近的未匹配開括號與當前閉括號不配對,或者找不...