LeetCode:20. 有效的括号——栈和队列

这篇具有很好参考价值的文章主要介绍了LeetCode:20. 有效的括号——栈和队列。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🍎道阻且长,行则将至。🍓

🌻算法,不如说它是一种思考方式🍀


算法专栏: 👉🏻123


一、🌱20. 有效的括号

  • 题目描述:给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
    有效字符串需满足:
    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。
    每个右括号都有一个对应的相同类型的左括号。

  • 来源:力扣(LeetCode)

  • 难度:简单

  • 提示:
    1 <= s.length <= 104
    s 仅由括号 ‘()[]{}’ 组成

  • 示例 1:
    输入:s = “()”
    输出:true
    示例 2:
    输入:s = “()[]{}”
    输出:true
    示例 3:
    输入:s = “(]”
    输出:false

🌴解题

题目要求判断字符串是不是合法括号组合,也就是找到一个左括号,还要在后面有一个可以连接的有括号。这时候我们使用栈这种先进后出数据结构就很方便,当左括号进栈,只有匹配到下一个要进栈的是右括号,也就是找到一个匹配括号,将其弹出栈。而如果进栈一个不能弹出栈的右括号,这时候肯定括号存在交叉或者不匹配,可以提前退出返回false。只有当最后栈为空才返回true,否则返回false

使用栈

为了熟悉栈,我们可以实现一个栈及其方法:

class MyStack {
    List<String> mystack=new ArrayList<>();
    public MyStack() {
    }
    public void push(String x) {//进栈
        mystack.add(x);
    }
    public String pop() {//弹出栈顶
        String x=mystack.get(mystack.size()-1);
        mystack.remove(mystack.size()-1);
        return x;
    }
    public String peek() {//栈顶
        return mystack.get(mystack.size()-1);
    }
    public boolean empty() {
        return mystack.isEmpty();
    }
}
  • code:
class Solution {
    public boolean isValid(String s) {
        MyStack stack=new MyStack();
        for (int i = 0; i < s.length(); i++) {
            if(!stack.empty()){//栈非空,就可以判断括号匹配
                switch(stack.peek()){
                    case "(":
                        if(s.charAt(i)==')')stack.pop();
                        else
                            stack.push(String.valueOf(s.charAt(i)));break;
                    case "[":
                        if(s.charAt(i)==']')stack.pop();
                        else
                            stack.push(String.valueOf(s.charAt(i)));break;
                    case "{":
                        if(s.charAt(i)=='}')stack.pop();
                        else
                            stack.push(String.valueOf(s.charAt(i)));break;
                    default:return false;
                }
            }else
            stack.push(String.valueOf(s.charAt(i)));
        }
        if(!stack.empty())
            return false;
        return true;
    }
}

LeetCode:20. 有效的括号——栈和队列


行路难!行路难!多岐路,今安在?
长风破浪会有时,直挂云帆济沧海。

返回第一页。☝


☕物有本末,事有终始,知所先后。🍭

LeetCode:20. 有效的括号——栈和队列

🍎☝☝☝☝☝我的CSDN☝☝☝☝☝☝🍓 文章来源地址https://www.toymoban.com/news/detail-426142.html

到了这里,关于LeetCode:20. 有效的括号——栈和队列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 代码随想录第十一天 | ​​​​​​LeetCode 20. 有效的括号、​​​​​​LeetCode 1047. 删除字符串中的所有相邻重复项、​​​​​​LeetCode 150. 逆波兰表达式求

    目录 ​​​​​​LeetCode 20. 有效的括号 文章讲解:代码随想录(programmercarl.com) 视频讲解:栈的拿手好戏!| LeetCode:20. 有效的括号_哔哩哔哩_bilibili 思路 ​​​​​​LeetCode 1047. 删除字符串中的所有相邻重复项 文章讲解:代码随想录(programmercarl.com) 视频讲解:栈的好戏还

    2024年02月22日
    浏览(79)
  • 代码随想录Day9 栈与队列 LeetCodeT20 有效的括号 T1047 删除字符串中所有相邻重复项 T150 逆波兰表达式求值

    题目详细思路和解法来自于:代码随想录 (programmercarl.com) 这道题分为三种情况 1.左括号多了         ([{}]() 2.括号不匹配         [{(]}] 3.右括号多了         []{}()))) 处理思路:我们在遇到左括号的时候,直接入栈其对应的右括号即可,然后在遇到右括号的时候直接与栈顶元素比

    2024年02月06日
    浏览(163)
  • Leetcode | 有效的括号、最长有效括号

    给定一个只包括  \\\'(\\\' , \\\')\\\' , \\\'{\\\' , \\\'}\\\' , \\\'[\\\' , \\\']\\\'  的字符串  s  ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。 示例 1: 示例 2: 示例 3: 提示: 1

    2024年02月14日
    浏览(44)
  • 20. 有效的括号

    2024年02月07日
    浏览(40)
  • 20. 有效的括号(Java)

    给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 1.左括号必须用相同类型的右括号闭合。 2.左括号必须以正确的顺序闭合。 3.每个右括号都有一个对应的相同类型的左括号。 s = “()[]{}” true

    2024年02月01日
    浏览(41)
  • LeetCode——有效的括号

    这里,我提供一种用栈来解决的方法: 思路:栈的结构是先进后出,这样我们就可以模拟栈结构了,如果是‘(’、‘{’、‘[’任何一种,直接push进栈就可以了,如果是‘}’、‘)’、‘]’任何一种就开始判断,看栈pop的是否和对应的字符匹配。    下面是源码:    

    2024年02月11日
    浏览(48)
  • [Leetcode] 0020. 有效的括号

    点击上方,跳转至leetcode 给定一个只包括 \\\'(\\\' , \\\')\\\' , \\\'{\\\' , \\\'}\\\' , \\\'[\\\' , \\\']\\\'  的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。 示例 1: 示例 2:

    2024年02月10日
    浏览(45)
  • Leetcode刷题之有效的括号

    我们的内心和心智,是决定我们未来命运的最强劲的力量。         -- 奥普拉·温弗瑞 目录 🍁一.有效的括号 🍍1.使用栈实现 🍒2.完整代码: 题目描述: 给定一个只包括 \\\'(\\\',\\\')\\\',\\\'{\\\',\\\'}\\\',\\\'[\\\',\\\']\\\' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 1.左括号必须用相

    2024年02月05日
    浏览(43)
  • Leetcode 678. 有效的括号字符串

    有效的括号字符串 【问题描述】 给你一个只包含三种字符的字符串,支持的字符类型分别是 ‘(’、‘)’ 和 ‘*’。请你检验这个字符串是否为有效字符串,如果是有效字符串返回 true 。 有效字符串符合如下规则: 示例 1: 输入:s = “()” 输出:true 示例 2: 输入:s = “

    2024年02月13日
    浏览(44)
  • 【动态规划】Leetcode 32. 最长有效括号【困难】

    给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 示例 2: 输入 :s = “)()())” 输出 :4 解释 :最长有效括号子串是 “()()” 1、使用动态规划求解,定义一个一维数组dp,其中dp[i]表示以第i个字符结尾的最长有效括号子串的长度

    2024年04月27日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包