栈-E20-有效的括号

2019-03-25  本文已影响0人  三次元蚂蚁

题目

  1. 左括号必须与相同类型的右括号闭合
  2. 所有括号都按正确的顺序闭合
  3. 空字符串也算正确闭合

思路

  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();
    }
}
上一篇下一篇

猜你喜欢

热点阅读