首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

括号匹配算法js

括号匹配算法是一种用于检查字符串中的括号是否正确配对的算法。在JavaScript中,这种算法通常使用栈(Stack)数据结构来实现。

基础概念

  1. 栈(Stack):是一种后进先出(LIFO, Last In First Out)的数据结构,只允许在一端(称为栈顶)进行插入和删除操作。
  2. 括号匹配:指的是检查字符串中的左括号和右括号是否一一对应,并且符合正确的嵌套顺序。

算法步骤

  1. 初始化一个空栈。
  2. 遍历字符串中的每个字符:
    • 如果字符是左括号(如 ([{),则将其压入栈中。
    • 如果字符是右括号(如 )]}),则检查栈顶元素:
      • 如果栈为空,或者栈顶元素不是对应的左括号,则字符串不匹配。
      • 否则,弹出栈顶元素。
  • 遍历结束后,如果栈为空,则字符串匹配;否则,字符串不匹配。

示例代码

代码语言:txt
复制
function isBracketMatched(str) {
    const stack = [];
    const brackets = {
        ')': '(',
        ']': '[',
        '}': '{'
    };
    
    for (let char of str) {
        if (char === '(' || char === '[' || char === '{') {
            stack.push(char);
        } else if (char === ')' || char === ']' || char === '}') {
            if (stack.length === 0 || stack.pop() !== brackets[char]) {
                return false;
            }
        }
    }
    
    return stack.length === 0;
}

// 测试示例
console.log(isBracketMatched("({[]})")); // 输出: true
console.log(isBracketMatched("({[}])")); // 输出: false

优势

  • 时间复杂度为 O(n),其中 n 是字符串的长度。
  • 空间复杂度为 O(n),在最坏情况下,栈可能需要存储所有的左括号。

应用场景

  • 在编程语言的解析器中,用于检查代码中的括号是否匹配。
  • 在文本编辑器中,用于提供括号匹配的实时反馈。
  • 在数学表达式或算术表达式的验证中。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券