首页 > 其他分享 >*20. Valid Parentheses[Easy]

*20. Valid Parentheses[Easy]

时间:2023-01-29 17:14:58浏览次数:39  
标签:false val 元素 Valid dict Easy 结束符 20 stack

20. Valid Parentheses

Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

An input string is valid if:

Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
Every close bracket has a corresponding open bracket of the same type.

Constraints:

  • 1 <= s.length <= 10^4
  • s consists of parentheses only '()[]{}'.

Example

Input: s = "()"
Output: true

思路

  • 先把题目里给定的三组用Map存起来,作为字典
  • 利用栈的先进后出的特性,如果是开始符就进栈,结束符的话,就出栈一个元素来和它比较是否为一对,是一对的话就相当于消除了一对,以此类推

题解

    public boolean isValid(String s) {
        char[] data = s.toCharArray();
        Stack<Character> stack = new Stack<>();
        HashMap<Character, Character> dict = new HashMap<>();
        dict.put('}', '{');
        dict.put(')', '(');
        dict.put(']', '[');

        for (char val : data) {
            // 判断当前字符是否结束符
            if (dict.containsKey(val)) {
                // 是结束符就要先看一下当前栈里是否有元素,如果没有,就代表这个结束符是首位,那直接false
                if (stack.isEmpty())
                    return false;
                // 如果栈中有元素,那就看栈中这个元素是否和当前元素对应,如果不等于,那就是不对应,也返回false
                if (!stack.pop().equals(dict.get(val)))
                    return false;
            } else
                // 如果不是结束符,就入栈
                stack.push(val);
        }
        // 如果到最后还剩下元素在栈内,就代表还有没有消除的,返回false,否则就是true
        return stack.isEmpty();
    }

标签:false,val,元素,Valid,dict,Easy,结束符,20,stack
From: https://www.cnblogs.com/tanhaoo/p/17073075.html

相关文章

  • 2023年第一天重新开始学习
    今日学习:WEB安全,渗透测试安全培训讲师:小迪 QQ:471656814第一讲 搭建环境介绍第二讲后门格式+sql注入初识sql注入漏洞原理:网站没有对输入的字符进行过滤,导致输入的......
  • laravel出现Please provide a valid cache path.
    访问首页出现如下提示:Pleaseprovideavalidcachepath.解决方法如下:1、确保storage目录下有如app,framework,views三个目录。2、确保storage/framework目录下也有cach......
  • [AHOI2009] 中国象棋 题解
    每行每列的炮数量\(\leq2\),那么整个图就可以被分解为一些环和链。考虑答案的二元生成函数,显然环和链分别的生成函数都是平凡的多项式,而答案的多项式无非是加起来后求exp......
  • 2023考试计划
    初级会计职称报名时间“2023年初级会计职称考试报名时间为2023年2月7日至2月28日,......
  • Firefly-RK356x板卡专栏总目录(Update to 2022.07.02)
    ......
  • Good Bye 2022 简要题解
    从这里开始比赛目录过气选手留下了只会套路的眼泪。sad......ProblemA KoxiaandWhiteboards相信大家都会.jpgCode#include<bits/stdc++.h>using......
  • 2023牛客寒假算法基础集训营2
    《重点考察容斥原理的题目》  《L.TokitsukazeandThreeIntegers》  可以看的出:n很小,首先考虑暴力的方法:我们可以用两层for循环,将(ai*aj)%p......
  • 2023年学技术为什么选择邯郸翱翔
    ​春节休息放松之后整理好心情,调整好状态“满电”投入新一年的工作与学习当中吧!春季班火热开启,年后该为自己打算了作为初中生或者高中生,如果你的文化课成绩不理想的话,选择学......
  • XMLSpy2006企业版汉化特别版
    XMLSpy2006企业版汉化特别版:​​http://soft.studa.com/Download.asp?ID=10255&sID=0​​我用迅雷速度可以达到约:180K/S 另外:MSXMLNotepad:​​http://www.soft666.com/s......
  • VB6写控件模拟金山词霸2007的按钮
    初步实现,还需要完善完善呵呵。。   ......