首页 > 其他分享 >20. 有效的括号

20. 有效的括号

时间:2022-11-16 10:55:20浏览次数:49  
标签:ch 20 示例 括号 有效 false stack

20. 有效的括号

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

有效字符串需满足:

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

示例 1:

输入:s = "()"
输出:true

示例 2:

输入:s = "()[]{}"
输出:true

示例 3:

输入:s = "(]"
输出:false

提示:

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

解法:用stack和map实现

class Solution {
    public boolean isValid(String s) {
        int n = s.length();
        if (n % 2 == 1) return false;     

        Map<Character,Character> pairs = new HashMap<Character,Character>() {{
            // 将右括号作为key,左括号作为值,因为匹配时我们是将右边括号与已进栈的左括号进行匹配
            put(')','(');
            put(']','[');
            put('}','{');
        }};

        Deque<Character> stack = new LinkedList<Character>();
        for (int i = 0;i < n;i++) {
            char ch = s.charAt(i);
            if(pairs.containsKey(ch)) {
                // 在map中,但不一定在栈中有匹配的,因此需要排除栈空,和左右括号不一致两种情况
                if (stack.isEmpty() || stack.peek() != pairs.get(ch)) {
                    return false;
                }
                // 左括号出栈
                stack.pop();
            } else {
                // 未匹配成功,将左括号压栈
                stack.push(ch);
            }
        }
        return stack.isEmpty();
    }
}

 

标签:ch,20,示例,括号,有效,false,stack
From: https://www.cnblogs.com/fulaien/p/16895134.html

相关文章

  • AutoCAD 2023 for Mac(cad2023) v2023.2注册激活中文版
    AutoCAD2023中文版是一款计算机辅助设计CAD软件,建筑师,工程师和建筑专业人员可依靠它来创建精确的2D和3D图形。新版cad2023软件的最新功能,包括行业特定的工具集、新的自动化......
  • 【白皮书下载】2020年数字营销与商业增长白皮书.pdf
    大家好,我是文文,今天给大家分享埃森哲与巨量引擎于2020年12月份联合发布的报告《2020年数字营销与商业增长白皮书:万物生长,新思维激发新可能.pdf》,伙伴们别错过了呀!本报告共59......
  • 2022-11-16 Unexpected end of JSON input
    vue+小程序,页面传参中的url路径有问题,导致传递过去后使用json.parse报错如题所示。原因:url中含有特殊字符无法被传递。解决方案:使用encodeURIComponent把参数编码,然后再......
  • 2022年09月23日-2022年09月25日 南京
    这次宝宝来南京首要的大事就是来确定婚纱照的事宜,早餐我们吃了我楼下的早餐店的饼子,宝宝说特别好吃,以后都要吃这个。行啊下次来再给你买呗,中午我们去了韩国艺匠,宝宝看了他......
  • 2022年09月09日-2022年09月11日 桐城
    中秋节这天,因为要加班,头一天回去,第二天早上就得回南京了。这次回去跟宝宝还有家人们一起过了一个中秋节,很热闹,每逢佳节倍思亲啊,隔日我便回南京了,宝宝则回太湖了,虽然这次相......
  • 2022年09月02日-2022年09月04日 南京
    这次宝宝来南京了,这次来我带宝宝去了南京最繁华的地段,南京新街口,确实繁华,我们来到了德基广场,去了蒂芙尼买了我们的订婚对戒,戒指是永恒的象征,我们也是找了好久才找到这款对......
  • 2022年08月19日-2022年08月21日 桐城
    第一次全家去太湖拜访,一行人带好东西首先去了宝宝家,喝了喝茶,唠了唠嗑,随后去了宝宝大舅家,正好宝宝的外公外婆也住那边,一起看望了下,也是相谈甚欢。酒席中大家聊着聊着都哭了,......
  • 2022年10月06日 太湖
    这天是个大日子,我和宝宝的订婚日,头天晚上我在花店定好花,给宝宝定了99多玫瑰,给阿姨定了一束康乃馨,让店主今天早上6点钟准时送到,我们这天起的很早,接到花后就出发去太湖了,心情......
  • Rocky9 、Ubuntu 20和centos 7的安装
    1、VMwareworkstation虚拟机新建2、3、 4、 5、6、在电脑D盘建一个放虚拟机的文件夹我这里使用的是centos87、分cpu处理器数量2个8、内存指导2G9、网络......
  • vs2019 调试 当前不会命中断点 还没有为该文档加载任何符号
     首先调式的时候确定在debug模式下,解决方法:工具-选项-调试-(启用“仅我的代码”)勾去掉。 ......