📅  最后修改于: 2023-12-03 15:36:38.958000             🧑  作者: Mango
在JavaScript中使用堆栈(stack)可以检查表达式中的平衡括号是否格式良好。
为了检查表达式中的平衡括号,我们需要一个堆栈,将括号推入堆栈,并在遇到相应的后括号时将其从堆栈中弹出。首先,我们需要创建一个空的堆栈。
let stack = [];
接下来,我们需要迭代表达式中的每个字符,并检查是否为左括号或右括号。
for(let i=0; i<expression.length; i++) {
let currentChar = expression[i];
// 检查当前字符是否为左括号或右括号
// ...
}
对于左括号,我们将其推入堆栈。
if(currentChar === "(") {
stack.push(currentChar);
}
对于右括号,我们需要检查堆栈是否为空(即表达式中是否存在左括号),如果不是,则弹出堆栈,并检查是否为相应的左括号。如果不是,则表示表达式中的括号不平衡,返回false。
if(currentChar === ")") {
// 检查是否存在左括号
if(stack.length === 0) {
return false;
}
// 如果堆栈不为空,则弹出并检查左括号
let topChar = stack.pop();
if(topChar !== "(") {
return false;
}
}
最后,我们需要检查堆栈是否为空,如果不为空,则表达式中存在左括号没有相应的右括号。如果为空,则表达式中的括号格式完全正确,返回true。
if(stack.length !== 0) {
return false;
}
return true;
function isBalanced(expression) {
let stack = [];
for(let i=0; i<expression.length; i++) {
let currentChar = expression[i];
if(currentChar === "(") {
stack.push(currentChar);
}
if(currentChar === ")") {
if(stack.length === 0) {
return false;
}
let topChar = stack.pop();
if(topChar !== "(") {
return false;
}
}
}
if(stack.length !== 0) {
return false;
}
return true;
}
console.log(isBalanced("((()))")); // true
console.log(isBalanced("(()))")); // false