返回

JavaScript技巧:理解LeetCode有效括号的巧妙解题法

前端

LeetCode有效括号简介

LeetCode上有一个名为“有效括号”的问题,要求判断给定字符串中的括号是否有效。有效括号指的是:

  • 每个左括号都有一个对应的右括号。
  • 每个右括号都有一个对应的左括号。
  • 左括号和右括号必须按正确的顺序出现。

例如,以下字符串中的括号是有效的:

()
[]
{}

而以下字符串中的括号是无效的:

([)]
{[]}
(])

JavaScript解决LeetCode有效括号

可以使用JavaScript轻松解决LeetCode上的有效括号问题。一种简单的方法是使用栈数据结构。栈是一种后进先出(LIFO)的数据结构,这意味着最后压入栈中的元素将首先弹出。

我们可以将左括号作为键,将右括号作为值,压入栈中。当遇到左括号时,将它压入栈中,遇到右括号时,检查栈顶元素是否与之匹配。如果匹配,则弹出栈顶元素,否则返回false。

以下是如何使用JavaScript解决LeetCode有效括号问题的示例代码:

function isValid(s) {
  //创建一个栈
  const stack = [];

  //遍历字符串
  for (let i = 0; i < s.length; i++) {
    //如果遇到左括号,将它压入栈中
    if (s[i] === '(' || s[i] === '[' || s[i] === '{') {
      stack.push(s[i]);
    }
    //如果遇到右括号,检查栈顶元素是否与之匹配
    else if (s[i] === ')' || s[i] === ']' || s[i] === '}') {
      //如果匹配,则弹出栈顶元素
      if (s[i] === ')' && stack[stack.length - 1] === '(') {
        stack.pop();
      } else if (s[i] === ']' && stack[stack.length - 1] === '[') {
        stack.pop();
      } else if (s[i] === '}' && stack[stack.length - 1] === '{') {
        stack.pop();
      }
      //如果不匹配,则返回false
      else {
        return false;
      }
    }
  }

  //如果栈中还有元素,则返回false
  if (stack.length > 0) {
    return false;
  }

  //否则,返回true
  return true;
}

结论

使用JavaScript解决LeetCode上的有效括号问题是一种简单而有效的方法。这种方法易于理解和实现,即使是前端开发新手也能轻松掌握。如果您想提高编程技能并挑战自己,不妨尝试使用JavaScript解决LeetCode上的有效括号问题。