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