返回

编程实战 | JavaScript 如何检查括号是否匹配

前端

有效的括号

为了构建一个有效的括号匹配程序,首先需要理解什么是有效的括号。在数学和计算机科学中,有效括号是指一系列括号,其中每个括号都有与之匹配的对应括号,且它们以正确的顺序出现。

例如,以下括号序列是有效的:

  • ()
  • {}
  • []
  • ()[]{}

以下括号序列不是有效的:

  • (
  • )
  • {]
  • [()]

使用栈数据结构

要检查括号是否匹配,一种有效的方法是使用栈数据结构。栈是一种遵循“后进先出”(LIFO)原则的数据结构,这意味着最后添加的元素将首先被移除。

以下是如何使用栈来检查括号是否匹配的步骤:

  1. 创建一个栈。
  2. 遍历括号序列中的每个字符。
  3. 如果当前字符是左括号,将其推入栈中。
  4. 如果当前字符是右括号,检查栈是否为空。如果栈为空,则括号序列不匹配。否则,从栈中弹出栈顶元素并与当前字符比较。如果它们不匹配,则括号序列不匹配。
  5. 重复步骤 2-4,直到遍历完整个括号序列。
  6. 如果栈为空,则括号序列匹配。否则,括号序列不匹配。

JavaScript 代码示例

以下是一个 JavaScript 代码示例,演示了如何使用栈来检查括号是否匹配:

function checkMatchingParentheses(input) {
  const stack = [];
  const pairs = {
    '(': ')',
    '{': '}',
    '[': ']'
  };

  for (let i = 0; i < input.length; i++) {
    const char = input[i];

    if (pairs[char]) {
      stack.push(char);
    } else if (pairs[stack.pop()] !== char) {
      return false;
    }
  }

  return stack.length === 0;
}

您可以通过调用 checkMatchingParentheses() 函数并传入要检查的括号序列来使用此代码。如果括号匹配,则该函数将返回 true,否则返回 false

扩展阅读