题型:栈
题目:
 
代码:
public boolean isValidReview(String s) {
            //(1)从s的i=0位置一次开始压栈,遇到左括号压栈,不管是大中小三种,左括号,压
            //(2)遇到右括号,不论大中小括号三种,只要是右括号,就弹出一个括号,必须还要和当前括号匹配才行
            //(3)一旦无法匹配就false,全体都匹配上了就是true,非常简单!
            if (s.compareTo("") == 0 || s.length()  == 0) return true;
            if (s.length() < 2) return false;
            Stack<Character> stack = new Stack<>();
            int N = s.length();
            for (int i = 0; i < N; i++) {
                char c = s.charAt(i);
                if (c == '(' || c == '[' || c == '{') stack.push(c);
                else {
                    //右括号弹出对比
                    if (stack.isEmpty()) return false;//提前就发现没了,说明问题大了,缺呀
                    char left = stack.pop();
                    if ((left == '(' && c == ')') ||
                            (left == '[' && c == ']') ||
                            (left == '{' && c == '}')) continue;     // 注意这里是continue.
                    else return false;//如果不满足其中一种匹配的条件,失败
                }
            }
            //全部通过,则OK
            return stack.isEmpty();    // 注意最终返回条件
        }
                


















