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