当前位置:首页 > 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防抖函数实现

防抖函数原理 防抖(Debounce)是一种限制函数频繁调用的技术,在事件被触发后延迟执行,若在延迟时间内再次触发,则重新计时。适用于输入框搜索、窗口大小调整等场景。 Vue 中实现防抖的三种方式…

react项目如何定义全局函数

react项目如何定义全局函数

定义全局函数的方法 在React项目中,可以通过以下几种方式定义全局函数,以便在整个应用中复用。 使用全局变量挂载 将函数挂载到window对象上,使其成为全局可访问的函数。这种方式简单直接,但可能…

react函数组件如何销毁事件

react函数组件如何销毁事件

在 React 函数组件中销毁事件 React 函数组件中需要手动销毁事件监听或定时器,以避免内存泄漏和性能问题。以下是几种常见情况的处理方法: 使用 useEffect 清理副作用 在函数组件中,…

react类函数中如何获取到props

react类函数中如何获取到props

在React类组件中获取props可以通过以下几种方式实现: 通过构造函数获取 在类组件的构造函数中,props会作为第一个参数传入。可以通过super(props)调用父类构造函数,并将props…

php函数使用递归实现

php函数使用递归实现

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

php实现抽奖函数

php实现抽奖函数

PHP 抽奖函数实现 以下是一个基于概率权重的 PHP 抽奖函数实现,适用于常见的抽奖场景如奖品抽取、随机选择等。 基础抽奖函数 function lotteryDraw($prizes) {…