📌  相关文章
📜  Python 程序使用堆栈类检查表达式中的平衡括号. - Python (1)

📅  最后修改于: 2023-12-03 15:04:18.063000             🧑  作者: Mango

Python 程序使用堆栈类检查表达式中的平衡括号

在编程中,经常需要检查表达式中的括号是否匹配且平衡。使用堆栈类可以很方便地实现这个功能。

实现原理

我们可以将所有的左括号都入栈,当遇到右括号时,判断栈顶的左括号是否与它匹配。如果匹配,就将栈顶的左括号弹出,并继续遍历表达式;如果不匹配,就说明表达式不平衡。

代码实现

以下是一个检查表达式中括号平衡的 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 程序。