20. 有效的括号

利用哈希表的键值对属性和堆的先进后出属性,

先将括号建立键值对,然后迭代时遇到键值对内元素

则弹出,否则继续压入堆内。迭代完毕后,若堆内不为空则无效,反之则有效。

时间O(n),空间O(n)(本题的map内键值对是固定的3组,所以空间是固定的,可以忽略不计)

public boolean isValid(String s) {
        HashMap<Character,Character> map = new HashMap<Character,Character>();
        map.put('}','{');
        map.put(']','[');
        map.put(')','(');
        Deque<Character> stack = new LinkedList<Character>();
        for (int i=0;i<s.length();i++){
            if (map.containsKey(s.charAt(i)) && map.get(s.charAt(i)).equals(stack.peek())){
                stack.pop();
            }else {
                stack.push(s.charAt(i));
            }
        }
        return stack.isEmpty();
    }
争取早日不再是一只菜鸡
原文地址:https://www.cnblogs.com/jchen104/p/14591335.html