题干

讲解

这个题目可以记住使用栈,知道了使用栈,就可以不停的判断括号是不是匹配,最后栈不为空,就是不闭合,为空就是闭合

题解

/**
 * 这里先用hash表存一下({[代码就不会显得这么蠢
 * 这样写比较容易懂,将就一下吧
 */
public boolean isValid(String s) {
    if(s.length()%2 != 0){
        return false;
    }
    Stack<String> stringStack = new Stack<String>();
    String[] strings = s.split("");

    if("}".equals(strings[0]) || "]".equals(strings[0]) || ")".equals(strings[0])){
        return false;
    }

    for(String l : strings){
        if(stringStack.isEmpty()){
            stringStack.push(l);
        }else{
            if(("}".equals(l) && "{".equals(stringStack.peek()))
               || ("]".equals(l) && "[".equals(stringStack.peek()))
               || (")".equals(l) && "(".equals(stringStack.peek()))){

                stringStack.pop();
            }else{
                stringStack.push(l);
            }
        }
    }

    return stringStack.isEmpty();
}