首页 > 其他分享 >1121-括号匹配

1121-括号匹配

时间:2024-11-21 22:32:11浏览次数:1  
标签:map 匹配 1121 括号 put return stack

括号匹配

题目大意:给出包括大中小括号随机排列的一个String s,判断是否为左右闭合(左右括号顺序对应)
解题思路:利用栈的特性去解决该问题,需要考虑边界栈空的情况
题解及注释:

class Solution {
    // 定义一个hashMap用于匹配括号右边
    private static final Map<Character, Character> map = new HashMap<Character, Character>(){{
        put('(',')');put('{','}');put('[',']');put('?','?');
    }};
    public boolean isValid(String s) {
        // 如果s为有效String的情况下第一个字符不在map的key值中,这种情况下说明有其他字符,直接返回false
        if (s.length() > 0 && !map.containsKey(s.charAt(0))) return false;
        // 这里用链表代替栈结构,主要方法为:addLast 最后新增一个节点;removeLast 移除最后一个节点并返回
        LinkedList stack = new LinkedList<Character>(){{add('?'); }};
        // 遍历该字符串
        for(Character c: s.toCharArray()) {
            // 当是左边括号的情况,入栈等待右边匹配
            // 当是右边括号的情况,将栈道最后一个字符拿出来判断是否与字符c相等,相等即闭合,否则就不符合题目要求
            if (map.containsKey(c))stack.addLast(c);
            else if (map.get(stack.removeLast()) != c)return false;
        }
        return stack.size() == 1;
    }
}

总结:K神的底子太好了,我看到的第一反应只是折半查找匹配。。。。。坚持记录一下

标签:map,匹配,1121,括号,put,return,stack
From: https://www.cnblogs.com/hgao/p/18561704

相关文章

  • 20.有效的括号-力扣(LeetCode)
    题目:解题思路:    首先要明确一个问题:配对的左右括号不一定是相邻的,例如:([])。    由上述,'(','[','{'可能不会在遍历整个字符串的过程中,立即找到配对的括号。括号的配对原则是:当遍历到右括号时去看后出现的左括号是否与之配对,那么很容易想到满足后进先出......
  • SS241121B. Soso 的模法矩阵(modmat)
    SS241121B.Soso的模法矩阵(modmat)题意给你长度为\(n\)的\(\{a_i\}\),长度为\(m\)的\(\{b_i\}\),设\(a_i'=\prod_{j=1}^ia_i,b_i'=\prod_{j=1}^ib_i\),对所有\(i\in[1,n],j\in[1,m]\),求\[(a_i'\bmodb_j')\bmod998244353......
  • Android开发教程案例源码分享-匹配动画多个头像飘动效果
    Android开发教程案例源码分享-匹配动画多个头像飘动效果匹配往往出现多个头像飘动,吸引人点击,有时出现的位置还不固定一、思路:用MotionLayout二、效果图:看视频更直观点:Android开发教程案例源码分享-匹配动画多个头像飘动效果三、关键代码:xml布局<?xmlversion......
  • 【20241121】Git客户端配置使用和各种命令解析
    gitee的使用文档  1、gitee是什么?基于git的代码托管协助平台2、git网站上的注册登录2.1打开gitee官网Gitee-基于Git的代码托管和研发协作平台打开注册登录即可。邮箱注册最好,非邮箱在个人-设置里添加自己的邮箱。新手请公开自己的邮箱,如图:     3、准......
  • 洛谷 P11210 强制在线动态二维数点
    题目传送门题目中的点满足\(y\lex\),那么不妨把每个点看成区间\([y,x]\)。那么题目相当于要求维护若干个区间,支持修改,以及查询询问区间中区间长度的最小值。从“区间长度的最小值”入手。显然包含别的区间的区间不能成为答案。排除了这样的区间,剩下区间按左端点升序排序,则右端......
  • Linux里反引号`和单引号‘注意区分,二者很像;以及双中括号[[]]
    $While[[`seq110|shuf|head-n1`!="1"]];doecho"retry";done问题结果发现:`seq110|shuf|head-n1`是反引号`,不是单引号’1.认成单引号和双引号执行情况:里面是字符不执行test_watch.sh执行bash脚本debug$bash-xtest_watch.sh2.正确表述......
  • 嵌入式硬件杂谈(三)-高速PCB入门,什么是阻抗匹配?
    引言:对于嵌入式硬件这个庞大的知识体系而言,太多离散的知识点很容易疏漏,因此对于这些容易忘记甚至不明白的知识点做成一个梳理,供大家参考以及学习,本文主要针对高速PCB入门的阻抗匹配问题的本质的知识点的进行学习。在嵌入式硬件设计领域,高速PCB设计是一项极具挑战性的工作,其中......
  • 文件夹大小和U盘剩余空间匹配问题
    前段时间将磁盘文件迁移到U盘中遇到了一点问题,首先通过查看属性,我知道这个文件夹所占的空间是16.5G,而U盘剩余可用空间是24.8G,但是在移动过程中显示U盘上的空间不足再一个问题就是文件属性中大小和占用空间并不一致这两个问题让我产生了困惑,通过度娘最终知晓了大致的原理1......
  • 力扣题目解析--括号生成
    题目数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例1:输入:n=3输出:["((()))","(()())","(())()","()(())","()()()"]示例2:输入:n=1输出:["()"]提示:1<=n<=8代码展示 classSolution{publi......
  • bash:双中括号和单中括号
    bash:双中括号和单中括号内容在Bash中,if语句可以使用单个中括号([)或者双中括号([[)进行条件测试。这里的[[是一种更强大且推荐的语法,与单中括号相比,具有以下优点和特点:为什么使用双中括号[[]]更强的条件测试功能:[[支持更复杂的条件测试,比如逻辑运算符(&&、||)、模式匹配......