我用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)