📜  使用给定的括号打印平衡的括号表达式(1)

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

使用给定的括号打印平衡的括号表达式

在编程工作中,我们经常需要处理各种括号匹配的问题,其中一个常见的问题是如何打印一个平衡的括号表达式。本文就介绍如何使用给定的括号打印平衡的括号表达式。

什么是平衡的括号表达式?

在数学表达式中,括号是用来控制运算符的优先级以及运算的顺序。如果一个表达式中的括号配对正确,且左右括号的数量相等,则称此表达式为平衡的括号表达式,例如:

  • (1+2)*3/(4-5) 是一个平衡的括号表达式
  • (1+(2*3) 是一个不平衡的括号表达式
  • (1+2)*3/((4-5)/2)+6 是一个不平衡的括号表达式
解决方案

打印一个平衡的括号表达式的思路很简单,即使用一个栈来存储左括号,在遍历表达式的时候,遇到左括号就入栈,遇到右括号则出栈一个左括号。如果括号匹配,则将对应的括号输出,否则输出错误信息。下面是代码示例:

def print_balanced_parenthesis(s):
    stack = []
    for c in s:
        if c == '(':
            stack.append(c)
        elif c == ')':
            if stack and stack[-1] == '(':
                stack.pop()
                print('()', end='')
            else:
                print('Unbalanced', end='')
                return
        else:
            print(c, end='')
    if not stack:
        return
    else:
        print('Unbalanced', end='')
使用示例
s = '(1+2)*3/(4-5)'
print_balanced_parenthesis(s) # 输出:(1+2)*3/(4-5)

s = '(1+(2*3)'
print_balanced_parenthesis(s) # 输出:Unbalanced

s = '(1+2)*3/((4-5)/2)+6'
print_balanced_parenthesis(s) # 输出:Unbalanced

以上代码可以在大多数编程语言中使用,只需要将输出的语法稍作调整即可。

总结

打印平衡的括号表达式是一个比较简单的问题,但是在实际工作中却有很大的用途。希望本文能对大家有所帮助。