首页 > 其他分享 >(leetcode每日一题)有效的括号

(leetcode每日一题)有效的括号

时间:2024-12-08 19:31:21浏览次数:6  
标签:map false String 示例 每日 list 括号 leetcode

(leetcode每日一题)有效的括号

题目

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

有效字符串需满足:

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

要求

示例 1:

输入:s = “()”

输出:true

示例 2:

输入:s = “()[]{}”

输出:true

示例 3:

输入:s = “(]”

输出:false

示例 4:

输入:s = “([])”

输出:true

提示:

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

思路

  • 先入后出正好符合栈的数据结构
  • 采用linkedList实现栈

代码

class Solution {
    public boolean isValid(String s) {
       Map<String,String> map = new HashMap<>();
        map.put(")","(");
        map.put("}","{");
        map.put("]","[");

        LinkedList<String> list = new LinkedList<>();
        for (int i = 0; i < s.length(); i++) {
            if(map.containsValue(String.valueOf(s.charAt(i)))){
                //插入阶段
                list.addLast(String.valueOf(s.charAt(i)));
            }else{
                String s1 = map.get(String.valueOf(s.charAt(i)));
                if(list.size()>0) {
                    if (list.getLast().equals(s1)) {
                        list.removeLast();
                    } else {
                        return false;
                    }
                }else{
                    return false;
                }
            }
        }
        if(list.size()>0){
            return false;
        }
        return true;
    }
}

总结

标签:map,false,String,示例,每日,list,括号,leetcode
From: https://blog.csdn.net/weixin_41952600/article/details/144330036

相关文章

  • 代码随想录算法训练营第三十八天|leetcode322. 零钱兑换、leetcode279.完全平方数、le
    1leetcode322.零钱兑换题目链接:322.零钱兑换-力扣(LeetCode)文章链接:代码随想录视频链接:动态规划之完全背包,装满背包最少的物品件数是多少?|LeetCode:322.零钱兑换哔哩哔哩bilibili思路:感觉跟之前的方法思路差不多,就是对dp初始化的时候,我开始弄错了,应该初始成无限大,对dp[......
  • 每日力扣打卡143.重排链表
    题目:给定一个单链表L的头节点head,单链表L表示为:L0→L1→…→Ln-1→Ln请将其重新排列后变为:L0→Ln→L1→Ln-1→L2→Ln-2→…不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例1:输入:head=[1,2,3,4]输出:[1,4,2,3]示......
  • LeetCode刷题 -- 哈希表
    目录两数之和题目解析算法原理代码面试题01.02.判定是否互为字符重排题目解析算法原理代码存在重复元素题目解析算法原理代码存在重复元素II题目解析算法原理代码字母异位词分组题目解析算法原理代码两数之和题目链接题目解析算法原理法一:暴力枚举,固定......
  • 高级java每日一道面试题-2024年12月08日-JVM篇-什么是类加载器?
    如果有遗漏,评论区告诉我进行补充面试官:什么是类加载器?我回答:在Java高级面试中,类加载器(ClassLoader)是一个重要的概念,它涉及到Java类的加载和初始化机制。以下是对类加载器的详细解释:定义与作用类加载器是Java虚拟机(JVM)提供的一种机制,用于将Java类的字节码(.class文......
  • 高级java每日一道面试题-2024年12月07日-JVM篇-如何选择垃圾收集器?
    如果有遗漏,评论区告诉我进行补充面试官:如何选择垃圾收集器?我回答:在Java高级面试中,选择垃圾收集器(GarbageCollector,GC)是一个重要且常见的议题。选择合适的垃圾收集器对于优化应用程序的性能至关重要。以下是对如何选择垃圾收集器的详细解析:了解垃圾收集器的基本类......
  • 【Leetcode Top 100】94. 二叉树的中序遍历
    问题背景给定一个二叉树的根节点rootrootroot,返回它的中序遍历。数据约......
  • 【Leetcode 每日一题】782. 变为棋盘
    问题背景一个n×nn\timesnn×n的二维网络b......
  • [LeetCode] 2684. Maximum Number of Moves in a Grid
    Youaregivena0-indexedmxnmatrixgridconsistingofpositiveintegers.Youcanstartatanycellinthefirstcolumnofthematrix,andtraversethegridinthefollowingway:Fromacell(row,col),youcanmovetoanyofthecells:(row-1,col+......
  • Leetcode Hot100 | Day02 双指针
    4.移动零283.移动零给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。示例1:输入:nums=[0,1,0,3,12]输出:[1,3,12,0,0]示例2:输入:nums=[0]输出:[0]题解:......
  • 详解LeetCode地下城游戏(动态规划)——区分两种状态表示形式
    地下城游戏题目链接:174.地下城游戏状态表示:按照以往题的表示,dp[i][j]表示:从起点(0,0)位置到达(i,j)位置时,所需的最小初始健康值。但是如果这么去表示,不仅要考虑到达(i,j)位置的最小初始健康值,由于魔法球的存在,还需要考虑到达(i,j)位置时的健康值,因为魔法球会对算后续位置的最小初始......