📌  相关文章
📜  检查给定的括号表达式是否平衡(1)

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

检查给定的括号表达式是否平衡

在编写程序时,我们经常需要处理括号表达式。其中一个重要的任务就是检查括号表达式是否平衡。如果括号没有正确嵌套,程序可能会出现错误或者得到错误的结果。因此,编写一个检查括号表达式是否平衡的函数是非常有用和必要的。

算法思路

我们可以使用栈来解决这个问题。当我们读取到左括号时,我们将它压入栈中。当我们读取到右括号时,我们从栈中弹出一个左括号。如果该左括号与当前右括号不匹配,则它们的配对不成功,表达式不平衡。最后,如果栈是空的,则表达式是平衡的。下面是一个实现的伪代码:

stack = new stack
for each symbol in expression:
    if symbol is '(':
        stack.push(symbol)
    else if symbol is ')':
        if stack is empty:
            return "expression is not balanced"
        left = stack.pop()
        if left is not '(':
            return "expression is not balanced"
if stack is not empty:
    return "expression is not balanced"
return "expression is balanced"
Python实现

下面是一个使用Python编写的检查括号表达式是否平衡的函数:

def is_balanced(expression):
    stack = []
    for symbol in expression:
        if symbol == '(':
            stack.append(symbol)
        elif symbol == ')':
            if not stack:
                return False
            left = stack.pop()
            if left != '(':
                return False
    return not stack

这个函数接受一个表达式字符串作为输入,并返回一个布尔值,表示该表达式是否平衡。如果表达式是平衡的,返回True,否则返回False

JavaScript实现

下面是一个使用JavaScript编写的检查括号表达式是否平衡的函数:

function isBalanced(expression) {
  let stack = [];
  for (let symbol of expression) {
    if (symbol === '(') {
      stack.push(symbol);
    } else if (symbol === ')') {
      if (!stack.length) {
        return false;
      }
      let left = stack.pop();
      if (left !== '(') {
        return false;
      }
    }
  }
  return !stack.length;
}

这个函数与Python的实现类似,接受一个表达式字符串作为输入,并返回一个布尔值,表示该表达式是否平衡。如果表达式是平衡的,返回true,否则返回false

总结

通过使用栈来检查括号表达式的平衡性,我们可以避免出现因为括号嵌套错误而导致的问题。这个方法是通用的,可以拓展到其他类型的括号,例如方括号和花括号。因此,这是一个有用的技巧,程序员们在编写代码时应该了解和掌握。