使用Python的栈实现括号匹配算法
写一个栈的类:stack.py
class Stack: def __init__(self): self.items = [] def is_Empty(self): return self.items == [] def push(self, item): self.items.append(item) def pop(self): return self.items.pop() def peek(self): return self.items[len(items)-1] def size(self): return len(self.items)
实现括号匹配的算法程序:
from stack import Stackdef parChecker(symbolString): s = Stack() balanced = True index = 0 while index < len(symbolString) and balanced: symbol = symbolString[index] if symbol == "(": s.push(symbol) elif symbol == ")": if s.is_Empty(): balanced = False else: s.pop() index += 1 if balanced and s.is_Empty(): return True else: return Falseprint(parChecker("(((2356)))"))
输出结果:
True
再测试
print(parChecker("(()))"))
输出结果False
扩展能够匹配多种括号,{},[]
只需要小小的改动代码:
from stack import Stackdef parChecker(symbolString): s = Stack() balanced = True index = 0 while index < len(symbolString) and balanced: symbol = symbolString[index] if symbol in "({[": s.push(symbol) elif symbol in ")}]": if s.is_Empty(): balanced = False else: s.pop() index += 1 if balanced and s.is_Empty(): return True else: return Falseprint(parChecker("[(({fdf}))]"))
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。