思路:栈,先进后出

1.左括号入栈,右括号与出栈的值相比,匹配则继续,为空或不匹配则抛错,最后不为空栈则代表漏右括号

		Stack stack = new Stack();
        int i=0;
        while(i<s.length()){
            char ch=s.charAt(i);
            switch (ch){
                case '(': case '[':case '{':
                    stack.push(ch);
                    break;
                case ')':
                    if(stack.isEmpty() || !stack.peek().toString().equals("("))
                        return false;
                    stack.pop();
                    break;
                case ']':
                    if(stack.isEmpty() || !stack.peek().toString().equals("["))
                        return false;
                    stack.pop();
                    break;
                case '}':
                    if(stack.isEmpty() || !stack.peek().toString().equals("{"))
                        return false;
                    stack.pop();
                    break;
            }
            i++;
        }
        return stack.isEmpty();

2.入栈对称的数据,出栈匹配和判空

 		if(s == null){
            return false;
        }
        Stack<Character> temp = new Stack<>();
        for(char item :s.toCharArray()){
            if(item == '['){
                temp.push(']');
            }else if(item == '{'){
                temp.push('}');
            }else if(item == '('){
                temp.push(')');
            }else if(temp.isEmpty() || temp.pop() != item){
                //如果 还有数据 并且不是 [ { (  ,那么temp就是空的,不符合要求,或者弹出的元素不等于当前的 也不是
                return false;
            }
        }
      return temp.isEmpty();

3.hashmap 存入取值的方式

 		Deque<Character> stack = new LinkedList<>();
        HashMap<Character,Character> map=new HashMap<Character,Character>(){{
            put(']','[');
            put(')','(');
            put('}','{');
        }};
        for(int i=0;i<s.length();i++){
            if(map.containsKey(s.charAt(i))){
                if(stack!=null && stack.peek()==map.get(s.charAt(i)))
                    stack.pop();
                else
                    return false;
            }else
                stack.push(s.charAt(i));
        }
        return stack.isEmpty();