本程式是MOOC學習北京大學陳斌老師課程后,自行改進撰寫。歡迎大家交流探討,不斷學習進步
'''
括號匹配演算法:
1.輸入括號運算式
2.如果是左括號的話入堆疊
3.如果遇到右括號,但是沒有左括號與其匹配(堆疊為空),回傳False
4.如果遇到了右括號且堆疊不為空,則堆疊中右括號必須與左括號匹配,如果不匹配,回傳False
5.如果遇到其他字符,就不予處理
6.當括號運算式字符回圈結束,堆疊是空的,則括號匹配;堆疊不是空的,則括號不匹配
'''
from Teststack import Stack
def bracMatch(bracketItem):
bracketList = list(bracketItem)
braStack = Stack()
leftbrac = "{[("
rightbrac = "}])"
result = True
for item in bracketList:
if item in leftbrac:
braStack.push(item)
elif item in rightbrac:
if braStack.isEmpty():
result = False
else:
if matchBoth(braStack.peek(),item):
braStack.pop()
else:
result = False
if braStack.isEmpty() and result:
result = True
else:
result = False
return result
def matchBoth(item1,item2):
leftbrac = "{[("
rightbrac = "}])"
return leftbrac.index(item1) == rightbrac.index(item2)
if __name__ == "__main__":
str = input("請輸入運算式")
if bracMatch(str):
print("括號匹配")
else:
print("括號不匹配")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/26560.html
下一篇:求助python例外重試
