美文网首页
栈-E20-有效的括号

栈-E20-有效的括号

作者: 三次元蚂蚁 | 来源:发表于2019-03-25 10:44 被阅读0次

    题目

    • 概述:给你一个只包含括号的字符串,判断该字符串中括号是否正确闭合,正确闭合的条件如下:
    1. 左括号必须与相同类型的右括号闭合
    2. 所有括号都按正确的顺序闭合
    3. 空字符串也算正确闭合
    • 输入:只包含括号的字符串

    • 输入子项:'(','{','[',')','}',']'

    • 输出:正确闭合为true,反之false

    思路

    • 由于每次判断是否闭合都要看前面的一个括号,可以考虑用栈来实现
    1. 如果输入类型是左括号类型则直接入栈
    2. 如果输入类型是右括号则看栈顶元素是否是相同类型的左括号,若是则将左括号出栈,反之就是错误闭合

    注意:若栈中没有元素也是错误闭合

    1. 最后看栈中是否有多余的元素,如果有则错误闭合,反之则正确闭合

    代码

    class Solution {
        public boolean isValid(String s) {
            LinkedList<Character> stack = new LinkedList<>();
            Map<Character, Character> map = new HashMap<>();
            map.put('(', ')');
            map.put('[', ']');
            map.put('{', '}');
            for (char c : s.toCharArray()) {
                switch (c) {
                    case '(':
                    case '{':
                    case '[':
                        stack.push(c);
                        break;
                    case ')':
                    case '}':
                    case ']':
                        if (stack.isEmpty()) {
                            return false;
                        }
                        if (map.get(stack.peek()) != c) {
                            return false;
                        } else {
                            stack.pop();
                        }
                        break;
                }
            }
            return stack.isEmpty();
        }
    }
    

    相关文章

      网友评论

          本文标题:栈-E20-有效的括号

          本文链接:https://www.haomeiwen.com/subject/pqqvvqtx.html