【刷题笔记8.10】LeetCode题目:有效括号

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

LeetCode题目:有效括号

1、题目描述:

给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号

【刷题笔记8.10】LeetCode题目:有效括号,leetcode,算法,java

2、分析

首先,解决此题,我们要明确使用这种数据结构(先进后出)

其次,本题一共有三种错误形式,分别是:

  • 错误1: 右括号多了 ( ))
  • 错误2:左右括号不匹配 [ ( ] }
  • 错误3:左括号多了 (( )

然后整体解决思路是这样:文章来源地址https://www.toymoban.com/news/detail-641029.html

  • 首先,来一手预判断,如果字符串长度不是偶数则肯定返回false
  • 然后,循环遍历字符串,遇到左括号( { [ ,直接将其入栈
  • 如果不为左括号,先判断栈是否为空,如果栈为空,则说明错误1 右括号多了
  • 然后判断当前字符和栈顶字符是否配对,如果配对则出栈栈顶元素,如果不配对则说明错误2 左右括号不匹配
  • 最后遍历完,判断栈是否为空,为空则返回true,不为空说明错误3 左括号多了 返回false

最后,别等了上代码

public class practice3 {
    public boolean isValid(String s) {
        //先声明一个栈。咱们这把使用栈Stack来搞定此题
        Stack<Character> stack = new Stack<>();

        //将字符串s,转化为一个字符数组char[]
        char[] a = s.toCharArray();

        //先进行个与判断,如果字符串长度不是偶数的话那肯定有多余的括号
        if (a.length % 2 != 0) {
            return false;
        }

        for (char x : a) {
            if (x == '(' || x == '[' || x == '{') {
            //遇到左括号,就将其入栈
                stack.push(x);
            } else {
                //此时是遇到了右括号
                if (stack.isEmpty()) {
                    //遇到右括号,但此时栈为空,说明错误1:右括号是多余的
                    return false;
                }
                char top = stack.peek();
                if ((x == ')' && top == '(') || (x == '}' && top == '{') || (x == ']' && top == '[')) {
                    stack.pop();
                } else {
                    //说明错误2:左右括号不匹配
                    return false;
                }
            }
        }
        if (stack.isEmpty()) {
            return true;
        } else {
            //说明错误3:说明左括号是多的
            return false;
        }
    }
}

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

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

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

相关文章

  • LeetCode——有效的括号

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

    2024年02月11日
    浏览(48)
  • leetcode 20.有效的括号

    🌟 leetcode链接: 有效的括号 1️⃣ 代码与思路: 栈问题: 左括号进栈,如果是右括号则拿出栈顶元素比较,相同弹出栈顶元素,接着继续比较,不相同返回 false ,还要考虑一些特殊情况,具体看如下代码。 注:由于C语言没有接口,所以手写了一套栈来使用。或者也可以使

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

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

    2024年02月10日
    浏览(44)
  • 【刷题笔记8.11】LeetCode题目:二叉树中序遍历、前序遍历、后序遍历

    (一)题目描述 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 (二)分析 二叉树中序遍历,遍历顺序:左节点 -》 根节点 -》 右节点 ( 注意:二叉树的前、中、后序遍历就是以根为基准,前序遍历根在最前面,中序遍历根在中间,后序遍历根在最后面 ) (三)

    2024年02月13日
    浏览(39)
  • LeetCode:20. 有效的括号——栈和队列

    🍎道阻且长,行则将至。🍓 🌻算法,不如说它是一种思考方式🍀 算法专栏: 👉🏻123 题目描述 :给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正

    2023年04月26日
    浏览(57)
  • 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日
    浏览(39)
  • 环形链表、环形链表 II、有效的括号​​​​​​​(leetcode)

    目录 一、环形链表 方法(快慢指针): 二、环形链表 II 三、有效的括号 给你一个链表的头节点  head  ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪  next  指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数  pos  来

    2024年02月04日
    浏览(40)
  • Leetcode的AC指南 —— 栈与队列:20. 有效的括号

    摘要: **Leetcode的AC指南 —— 栈与队列:20. 有效的括号 **。题目介绍:给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都

    2024年01月22日
    浏览(42)
  • 【数据结构与算法】6、栈(Stack)的实现、LeetCode:有效的括号

    🌱 栈 是一种特殊的线性表, 只能在一端进行操作 🌱 往栈中 添加 元素的操作,一般叫做 push ( 入栈 ) 🌱 从栈中 移除 元素的操作,一般叫做 pop ,出栈(只能移除栈顶元素),也叫做: 弹出栈顶元素 🌱 后进先出 的原则, L ast I n F irst O ut, LIFO 注意:这里的 栈 与内

    2024年02月13日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包