js函数实现大括号匹配
大括号匹配的 JavaScript 实现
大括号匹配是指检查字符串中的大括号 { 和 } 是否成对出现且嵌套正确。以下是几种实现方法:

使用栈结构进行匹配
栈是解决括号匹配问题的经典数据结构。遍历字符串时,遇到左括号压栈,遇到右括号弹栈并检查是否匹配。

function isBalanced(str) {
const stack = [];
const pairs = { '{': '}' };
for (let char of str) {
if (pairs[char]) {
stack.push(char);
} else if (char === '}') {
if (stack.length === 0 || pairs[stack.pop()] !== char) {
return false;
}
}
}
return stack.length === 0;
}
简化计数器版本
如果不考虑嵌套层级,仅检查数量是否匹配,可以使用计数器实现:
function isSimpleBalanced(str) {
let count = 0;
for (let char of str) {
if (char === '{') count++;
if (char === '}') count--;
if (count < 0) return false; // 右括号出现在左括号前
}
return count === 0;
}
处理多类型括号扩展
需要同时匹配多种括号类型时(如 {}, [], ()),扩展栈方法:
function isMultiBalanced(str) {
const stack = [];
const pairs = { '{': '}', '[': ']', '(': ')' };
for (let char of str) {
if (pairs[char]) {
stack.push(char);
} else if (Object.values(pairs).includes(char)) {
if (stack.length === 0 || pairs[stack.pop()] !== char) {
return false;
}
}
}
return stack.length === 0;
}
测试用例示例
console.log(isBalanced('{}{}')); // true
console.log(isBalanced('{{}')); // false
console.log(isBalanced('}{')); // false
console.log(isMultiBalanced('{[()]}')); // true
注意事项
- 空字符串应返回
true(视为有效匹配) - 非括号字符应被忽略
- 右括号不能出现在对应的左括号之前
- 栈最终必须为空才能判定为完全匹配






