我用java刷 leetcode 20.有效的括号

Posted 深林无鹿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我用java刷 leetcode 20.有效的括号相关的知识,希望对你有一定的参考价值。

这里有leetcode题集分类整理!!!

题目难度:简单
题目描述: 给定一个只包括 ‘(’,’)’,’’,’’,’[’,’]’ 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。

样例 1:

输入:s = “()”
输出:true
样例 2:

输入:s = “()[]”
输出:true
样例 3:

输入:s = “(]”
输出:false
样例 4:

输入:s = “([)]”
输出:false
样例 5:

输入:s = “[]”
输出:true

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

        LinkedList<Character> stack = new LinkedList<>();
        for (char c : s.toCharArray()) 
            if (map.containsKey(c)) 
                stack.add(c);
             else 
                if (stack.isEmpty() || map.get(stack.removeLast()) != c) 
                    return false;
                
            
        
        return stack.isEmpty();
    


官解:

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>() 
            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)) 
                if (stack.isEmpty() || stack.peek() != pairs.get(ch)) 
                    return false;
                
                stack.pop();
             else 
                stack.push(ch);
            
        
        return stack.isEmpty();
    


作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/valid-parentheses/solution/you-xiao-de-gua-hao-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

以上是关于我用java刷 leetcode 20.有效的括号的主要内容,如果未能解决你的问题,请参考以下文章

python刷LeetCode:20. 有效的括号

LeetCode刷题-20.有效括号(JS)

leetcode刷题5.有效的括号——Java版

leetcode刷题目录

LeetCode-20. 有效的括号(java)

LeetCode-20. 有效的括号(java)