檢查括號是否閉合
1defcheck_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程式裡的括號,在這裡可以看到 不難總結出檢查括號配對的原則 在掃瞄正文過程中,遇到的閉括號應該與此前最近遇到且尚未獲得匹配的開括號配對。如果最近的未匹配開括號與當前閉括號不配對,或者找不...