描述
分析
使用栈,如果是左括号,入栈,如果是右括号,判断栈是否为空,不是空出栈并校验是否匹配,不匹配返回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)
面试公司
美团