📅  最后修改于: 2023-12-03 15:04:18.063000             🧑  作者: Mango
在编程中,经常需要检查表达式中的括号是否匹配且平衡。使用堆栈类可以很方便地实现这个功能。
我们可以将所有的左括号都入栈,当遇到右括号时,判断栈顶的左括号是否与它匹配。如果匹配,就将栈顶的左括号弹出,并继续遍历表达式;如果不匹配,就说明表达式不平衡。
以下是一个检查表达式中括号平衡的 Python 程序。该程序使用堆栈类 Stack 实现栈。
class Stack:
def __init__(self):
self.stack = []
def push(self, item):
self.stack.append(item)
def pop(self):
return self.stack.pop()
def is_empty(self):
return len(self.stack) == 0
def peek(self):
if self.is_empty():
return None
return self.stack[-1]
def size(self):
return len(self.stack)
def is_balanced(expression):
stack = Stack()
for ch in expression:
if ch in '([{':
stack.push(ch)
elif ch in ')]}':
if stack.is_empty() or not is_match(stack.peek(), ch):
return False
else:
stack.pop()
return stack.is_empty()
def is_match(left, right):
return left == '(' and right == ')' or \
left == '[' and right == ']' or \
left == '{' and right == '}'
# 测试代码
if __name__ == '__main__':
print(is_balanced('()'))
print(is_balanced('()[]{}'))
print(is_balanced('(]'))
print(is_balanced('([)]'))
print(is_balanced('{[]}'))
True
True
False
False
True
以上就是使用堆栈类实现检查表达式中括号平衡的 Python 程序。