public boolean isValid (String s) {
        // write code here
        if(s==null) return true;
        char[] c=s.toCharArray();
        Stack<Character> stack=new Stack();
        Map<Character,Character> map=new HashMap<>();
        map.put(')','(');
        map.put('}','{');
        map.put(']','[');
        for(char cc:c){
            if(cc=='(' || cc=='{' || cc=='['){
                stack.push(cc);
            //主要就是注意在栈空的时候 也是不合法的;并且在执行栈方法的时候也需要去判断栈是否为空
            }else if(stack.isEmpty()||stack.pop()!=map.get(cc)){
                 return false;
            }
        }
        //最后栈里面可能还有括号序列此时也是不合法的
        return stack.isEmpty()?true:false;
    }