思想很简单,最简单的想法就是用个栈,匹配就出栈,否则入栈,但是时间略长,才能beats百分之十几。。。参考别人算法稍加改进后得到如下算法:beats84%
public class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
for (char c : s.toCharArray()) {
if (c == '(')
stack.push(')');
else if (c == '{')
stack.push('}');
else if (c == '[')
stack.push(']');
else{
if (stack.isEmpty() || c!=stack.pop()) {
return false;
}
}
}
return stack.isEmpty();
}
}
注意,if语句中是判断直接出栈后的元素!这样比先判断栈顶元素再出栈时间提升不少,百分之十几到百分之八十几。。。。