返回
各显神通,征服括号世界:揭秘有效括号的多种实现方式
前端
2023-10-06 13:23:40
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
## 目录
- 有效的括号(if..else 实现)
- 有效的括号(switch..case 实现)
- 有效的括号(对象分支 实现)
- 有效括号的多个
## 有效括号的定义
有效括号是指成对出现的括号,其中每个左括号都有一个匹配的右括号,而且这些括号的顺序是正确的。
例如,以下字符串包含有效括号:
"()"
"[()]"
"{[]}"
以下字符串包含无效括号:
"("
")()"
"([)]"
"{[}]"
## 有效括号的判断方法
判断一个字符串是否包含有效括号,可以使用以下方法:
1. 栈:将左括号压入栈中,当遇到右括号时,将栈顶的左括号弹出。如果栈为空,则字符串包含有效括号;否则,字符串包含无效括号。
2. 计数器:对每个左括号,将计数器加一;对每个右括号,将计数器减一。如果计数器始终为零,则字符串包含有效括号;否则,字符串包含无效括号。
## 有效括号的三种实现方式
### 1. if..else 实现
```js
function isValidParentheses(str) {
const stack = [];
const left = ['(', '[', '{'];
const right = [')', ']', '}'];
for (let i = 0; i < str.length; i++) {
const char = str[i];
if (left.includes(char)) {
stack.push(char);
} else if (right.includes(char)) {
const top = stack.pop();
if (left.indexOf(top) !== right.indexOf(char)) {
return false;
}
}
}
return stack.length === 0;
}
2. switch..case 实现
function isValidParentheses(str) {
const stack = [];
for (let i = 0; i < str.length; i++) {
const char = str[i];
switch (char) {
case '(':
case '[':
case '{':
stack.push(char);
break;
case ')':
case ']':
case '}':
const top = stack.pop();
if (char === ')' && top !== '(') {
return false;
} else if (char === ']' && top !== '[') {
return false;
} else if (char === '}' && top !== '{') {
return false;
}
break;
}
}
return stack.length === 0;
}
3. 对象分支 实现
function isValidParentheses(str) {
const stack = [];
const pairs = {
')': '(',
']': '[',
'}': '{'
};
for (let i = 0; i < str.length; i++) {
const char = str[i];
if (pairs[char]) {
const top = stack.pop();
if (top !== pairs[char]) {
return false;
}
} else {
stack.push(char);
}
}
return stack.length === 0;
}
结语
有效括号的判断是编程面试中常见的问题。本文介绍了有效括号的定义、判断方法,并用三种不同实现方式——if..else、switch..case、对象分支——来演示如何解决这个问题。希望本文对您有所帮助。