2016 - 2024

感恩一路有你

js判断括号是否合法

浏览量:3997 时间:2023-12-15 14:57:03 作者:采采

在编程中,判断括号是否合法是一个常见的问题。例如,对于表达式"(a b)*(c-d)",我们希望能够通过程序来验证其中的括号是否匹配正确。本文将介绍使用JavaScript实现括号合法性判断的方法。

一、栈的应用

栈是一种后进先出(LIFO)的数据结构,非常适合用来解决括号匹配的问题。我们可以遍历表达式中的每一个字符,当遇到左括号时,将其压入栈中;当遇到右括号时,判断栈顶的字符是否为相应的左括号,如果是,则将栈顶的字符出栈,继续遍历下一个字符;如果不是,则说明括号不匹配,返回false。

以下是使用栈实现括号匹配的代码示例:

```javascript

function isParenthesesValid(expression) {

let stack [];

for (let i 0; i < expression.length; i ) {

if (expression[i] '(' || expression[i] '[' || expression[i] '{') {

stack.push(expression[i]);

} else if (expression[i] ')' || expression[i] ']' || expression[i] '}') {

if (stack.length 0) {

return false;

}

let top stack.pop();

if ((expression[i] ')' top ! '(') || (expression[i] ']' top ! '[') || (expression[i] '}' top ! '{')) {

return false;

}

}

}

return stack.length 0;

}

let expression "(a b)*(c-d)";

console.log(isParenthesesValid(expression));

```

二、遍历字符串的实现

除了使用栈,我们还可以使用遍历字符串的方式来判断括号是否合法。思路是创建一个计数器,遍历表达式中的每一个字符,当遇到左括号时,计数器加一;当遇到右括号时,计数器减一。如果在遍历过程中计数器小于零,或者最终计数器不等于零,则说明括号不匹配,返回false。

以下是使用遍历字符串实现括号匹配的代码示例:

```javascript

function isParenthesesValid(expression) {

let count 0;

for (let i 0; i < expression.length; i ) {

if (expression[i] '(') {

count ;

} else if (expression[i] ')') {

count--;

if (count < 0) {

return false;

}

}

}

return count 0;

}

let expression "(a b)*(c-d)";

console.log(isParenthesesValid(expression));

```

综上所述,本文介绍了使用JavaScript判断括号是否合法的两种方法:栈的应用和遍历字符串。读者可以根据自己的实际需求选择合适的方法来解决括号匹配问题。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。