LeetCode——有效的括号(借助栈)

简介: LeetCode——有效的括号(借助栈)

题目描述

image.png

解题思路

本题的核心解题思路在于借助栈。

  1. 首先,定义一个栈。
  2. 遍历字符串中的每一个元素,如果该元素是左括号,不管是哪一种类型的左括号都直接入栈。
  3. 如果遇到的是右括号,首先判断栈中是否有元素,如果没有元素则直接返回false,如果有元素,则判断是否是一对有效的括号,如果无效则返回false。
  4. 循环完成之后,判断栈中是否还有元素,如果没有则返回true,反之返回false。

AC代码

var isValid = function(s) {
  // 本题使用栈的思想进行求解,思路较为简单
  // 首先定义一个栈
  let stack = [];
  // 遍历s的每一个元素
  for (let i = 0;i < s.length; i++) {
    // 如果是左括号,则直接入栈
    if (s[i] === '(' || s[i] === '{' || s[i] === '[') {
      stack.push(s[i]);
    } else {
      // 能够走到这里说明不是左括号
      // 如果遇到一个右括号并且此时栈为空,说明这个不是有效的括号,可以直接返回false 
      if (stack.length === 0) return false;
      // 如果栈不为空
      // 获取栈顶元素
      let stackTop = stack[stack.length-1];
      if ((stackTop === '(' && s[i] === ')') || (stackTop === '[' && s[i] === ']') || (stackTop === '{' && s[i] === '}')) {
        stack.pop();
      } else {
        return false
      }
    }
  }
  // 遍历完成后,如果最后栈为空说明是有效的阔含,反之说明不是有效的括号
  if (stack.length === 0) {
    return true 
  } else {
    return false
  }
};
复制代码

题目反思

  • 学会使用栈来解决有效的括号这类问题。
相关文章
|
1月前
|
存储 算法 Java
leetcode算法题-有效的括号(简单)
【11月更文挑战第5天】本文介绍了 LeetCode 上“有效的括号”这道题的解法。题目要求判断一个只包含括号字符的字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合,并且左括号必须以正确的顺序闭合。解题思路是使用栈数据结构,遍历字符串时将左括号压入栈中,遇到右括号时检查栈顶元素是否匹配。最后根据栈是否为空来判断字符串中的括号是否有效。示例代码包括 Python 和 Java 版本。
|
5月前
|
存储 算法 测试技术
力扣经典150题第五十四题:最小栈
力扣经典150题第五十四题:最小栈
44 0
|
6月前
|
存储 算法 索引
力扣每日一题 6/24 模拟 数组 单调栈
力扣每日一题 6/24 模拟 数组 单调栈
39 0
|
2月前
|
算法 C++
Leetcode第二十二题(括号生成)
这篇文章讨论了如何使用递归算法解决LeetCode第22题“括号生成”的问题,提供了两种C++的实现方法,目的是生成所有有效的括号组合。
21 0
Leetcode第二十二题(括号生成)
|
2月前
【LeetCode 24】225.用队列实现栈
【LeetCode 24】225.用队列实现栈
12 0
|
2月前
|
存储 C++ 容器
Leetcode第二十题(有效的括号)
这篇文章介绍了如何使用栈来解决LeetCode第20题“有效的括号”问题,提供了两种方法:数组栈和容器栈,以及相应的C++代码实现。
19 0
|
2月前
|
算法
【LeetCode 23】232.用栈实现队列
【LeetCode 23】232.用栈实现队列
24 0
|
4月前
|
算法
LeetCode第22题括号生成
该文章介绍了 LeetCode 第 22 题括号生成的解法,通过回溯算法生成所有可能的括号组合,在递归过程中根据左右括号数量的条件进行剪枝,从而得到有效的括号组合。
LeetCode第22题括号生成
|
4月前
|
存储 算法
LeetCode第20题有效的括号
该文章介绍了 LeetCode 第 20 题有效的括号的解法,通过分析有效括号的特征,使用栈结构存储括号关系,判断遇到右边括号时栈顶是否有匹配的左边括号,从而解决问题,同时总结了栈的先进后出结构可用于解决有规律的符号匹配问题。
LeetCode第20题有效的括号
|
4月前
|
Python
【Leetcode刷题Python】946. 验证栈序列
LeetCode题目“946. 验证栈序列”的Python解决方案,通过模拟栈的压入和弹出操作来验证给定的两个序列是否能通过合法的栈操作得到。
33 6