描述

 
分析
使用栈,如果是左括号,入栈,如果是右括号,判断栈是否为空,不是空出栈并校验是否匹配,不匹配返回false。最后如果栈为空,返回true。
 
代码
class Solution {
    public boolean isValid(String s) {
        Stack<Character> st = new Stack<>();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c == '(' || c == '{' || c == '[') {
                st.push(c);
            }
            if (c == ')' || c == '}' || c == ']') {
                if (st.isEmpty())
                    return false;
                char pre = st.pop();
                if (c == ')' && pre != '(') {
                    return false;
                }
                if (c == '}' && pre != '{') {
                    return false;
                }
                if (c == ']' && pre != '[') {
                    return false;
                }
            }
        }
        return st.isEmpty();
    }
}
 
时间复杂度O(n)
 
面试公司
美团


















