当前位置:首页 > JavaScript

js函数实现大括号匹配

2026-03-02 00:13:18JavaScript

大括号匹配的实现思路

大括号匹配问题通常指检查字符串中的大括号 {} 是否成对出现且嵌套正确。以下是几种实现方法:

使用栈结构实现

栈是解决括号匹配问题的经典数据结构。遍历字符串时,遇到左括号 { 入栈,遇到右括号 } 出栈。最终栈为空则匹配成功。

js函数实现大括号匹配

function isBalanced(str) {
  const stack = [];
  for (const char of str) {
    if (char === '{') {
      stack.push(char);
    } else if (char === '}') {
      if (stack.length === 0) return false;
      stack.pop();
    }
  }
  return stack.length === 0;
}

计数器优化实现

当仅需处理单一括号类型时,可以用计数器替代栈。遇到 { 计数器加1,遇到 } 计数器减1。计数器为负或最终不为零均不匹配。

js函数实现大括号匹配

function isBalanced(str) {
  let count = 0;
  for (const char of str) {
    if (char === '{') count++;
    else if (char === '}') {
      if (--count < 0) return false;
    }
  }
  return count === 0;
}

处理多类型括号扩展

若需同时匹配 {}[]() 等多种括号,栈结构仍适用,但需增加配对检查逻辑:

function isBalanced(str) {
  const stack = [];
  const pairs = { '{': '}', '[': ']', '(': ')' };
  for (const char of str) {
    if (pairs[char]) {
      stack.push(char);
    } else if (Object.values(pairs).includes(char)) {
      if (pairs[stack.pop()] !== char) return false;
    }
  }
  return stack.length === 0;
}

边界条件处理

实际应用中需考虑以下边界情况:

  • 空字符串直接返回 true
  • 忽略非括号字符(如字母、数字)
  • 右括号出现在左括号前立即返回 false

测试用例示例

console.log(isBalanced('')); // true
console.log(isBalanced('{}')); // true
console.log(isBalanced('{{}}')); // true
console.log(isBalanced('}{')); // false
console.log(isBalanced('{{}')); // false

性能分析

  • 时间复杂度:O(n),需遍历整个字符串一次
  • 空间复杂度:O(n),栈可能存储最多 n/2 个左括号(最坏情况)

以上实现可根据具体需求调整,例如添加错误位置报告或支持自定义括号对。

标签: 括号函数
分享给朋友:

相关文章

自己实现vue双括号

自己实现vue双括号

实现 Vue 双括号插值的基本原理 Vue 的双括号插值({{ }})是数据绑定的核心功能之一,其本质是将模板中的表达式解析并与数据对象动态关联。以下是手动实现类似功能的步骤: 数据劫持与响应式 通…

react如何调用函数

react如何调用函数

React 函数调用的方法 在 React 中调用函数可以通过多种方式实现,具体取决于函数的作用和调用时机。以下是常见的几种方法: 直接在组件中调用函数 函数可以在组件的 render 方法或…

react如何调用子组件的函数

react如何调用子组件的函数

调用子组件函数的常见方法 使用 ref 直接调用 通过 React.createRef() 或 useRef 创建引用,附加到子组件上。子组件需用 forwardRef 暴露内部方法,类组件则直接通过…

react如何在model层写函数调接口

react如何在model层写函数调接口

React 中 Model 层函数调用接口的实现 在 React 应用中,Model 层通常负责数据管理和接口调用。可以通过以下方式组织代码: 创建独立的 API 服务模块 将接口调用封装在单独的…

react闭包实现函数

react闭包实现函数

在 React 中实现闭包函数 闭包在 React 中常用于保存函数作用域内的变量状态,尤其在处理异步操作或事件回调时。以下是几种常见的实现方式: 使用 useCallback 缓存函数 use…

php函数使用递归实现

php函数使用递归实现

递归的基本概念 递归是一种在函数内部调用自身的编程技术。它通常用于解决可以被分解为相同问题的子问题的情况。递归函数需要有一个终止条件,否则会导致无限循环。 递归函数的实现 在PHP中,递归函数的实…