js判断括号是否合法
在编程中,判断括号是否合法是一个常见的问题。例如,对于表达式"(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判断括号是否合法的两种方法:栈的应用和遍历字符串。读者可以根据自己的实际需求选择合适的方法来解决括号匹配问题。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。