📌  相关文章
📜  使用堆栈检查表达式(格式良好)中的平衡括号的Python程序

📅  最后修改于: 2022-05-13 01:56:56.484000             🧑  作者: Mango

使用堆栈检查表达式(格式良好)中的平衡括号的Python程序

给定一个表达式字符串exp,编写一个程序来检查 exp 中“{“, “}”, “(“, “)”, “[”, “]” 的对和顺序是否正确。

示例

检查表达式中的平衡括号

算法:

  • 声明一个字符栈 S。
  • 现在遍历表达式字符串exp。
    1. 如果当前字符是起始括号( '(' 或 '{' 或 '[' ),则将其推入堆栈。
    2. 如果当前字符是右括号( ')' 或 '}' 或 ']' ),则从堆栈中弹出,如果弹出的字符是匹配的起始括号,则可以,否则括号不平衡。
  • 完全遍历后,如果堆栈中还有一些起始括号,则“不平衡”

下图是上述方法的试运行:

下面是上述方法的实现:

Python3
# Python3 program to check for
# balanced brackets.
  
# function to check if
# brackets are balanced
  
  
def areBracketsBalanced(expr):
    stack = []
  
    # Traversing the Expression
    for char in expr:
        if char in ["(", "{", "["]:
  
            # Push the element in the stack
            stack.append(char)
        else:
  
            # IF current character is not opening
            # bracket, then it must be closing.
            # So stack cannot be empty at this point.
            if not stack:
                return False
            current_char = stack.pop()
            if current_char == '(':
                if char != ")":
                    return False
            if current_char == '{':
                if char != "}":
                    return False
            if current_char == '[':
                if char != "]":
                    return False
  
    # Check Empty Stack
    if stack:
        return False
    return True
  
  
# Driver Code
if __name__ == "__main__":
    expr = "{()}[]"
  
    # Function call
    if areBracketsBalanced(expr):
        print("Balanced")
    else:
        print("Not Balanced")
  
# This code is contributed by AnkitRai01 and improved
# by Raju Pitta


输出
Balanced

时间复杂度: O(n)
辅助空间:堆栈的 O(n)。

有关更多详细信息,请参阅有关使用 Stack 的表达式(格式良好)检查平衡括号的完整文章!