js判斷括號是否合法
在編程中,判斷括號是否合法是一個常見的問題。例如,對于表達式"(a b)*(c-d)",我們希望能夠通過程序來驗證其中的括號是否匹配正確。本文將介紹使用JavaScript實現(xiàn)括號合法性判斷的方法。一
在編程中,判斷括號是否合法是一個常見的問題。例如,對于表達式"(a b)*(c-d)",我們希望能夠通過程序來驗證其中的括號是否匹配正確。本文將介紹使用JavaScript實現(xiàn)括號合法性判斷的方法。
一、棧的應用
棧是一種后進先出(LIFO)的數(shù)據(jù)結構,非常適合用來解決括號匹配的問題。我們可以遍歷表達式中的每一個字符,當遇到左括號時,將其壓入棧中;當遇到右括號時,判斷棧頂?shù)淖址欠駷橄鄳淖罄ㄌ枺绻?,則將棧頂?shù)淖址鰲?,繼續(xù)遍歷下一個字符;如果不是,則說明括號不匹配,返回false。
以下是使用棧實現(xiàn)括號匹配的代碼示例:
```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));
```
二、遍歷字符串的實現(xiàn)
除了使用棧,我們還可以使用遍歷字符串的方式來判斷括號是否合法。思路是創(chuàng)建一個計數(shù)器,遍歷表達式中的每一個字符,當遇到左括號時,計數(shù)器加一;當遇到右括號時,計數(shù)器減一。如果在遍歷過程中計數(shù)器小于零,或者最終計數(shù)器不等于零,則說明括號不匹配,返回false。
以下是使用遍歷字符串實現(xiàn)括號匹配的代碼示例:
```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判斷括號是否合法的兩種方法:棧的應用和遍歷字符串。讀者可以根據(jù)自己的實際需求選擇合適的方法來解決括號匹配問題。