第一次做的时候还以为是需要左括号入栈,右括号判断是否栈最顶端是与当前的匹配即pop即可,最终返回栈是否是empty
鹅 简直是傻 其实只需要考虑右括号是否与栈顶匹配,不匹配直接就返回false即可。
class Solution {
public boolean isValid(String str) {
if(str.length()==0){
return true;
}
Map<Character, Character> brackets= new HashMap<>();
brackets.put('}','{');
brackets.put(']','[');
brackets.put(')','(');
Stack<Character> stk=new Stack<Character>();
for(int i=0;i<str.length();i++) {
char c=str.charAt(i);
if(brackets.containsKey(c)) {
if( !stk.isEmpty()&&stk.peek() == brackets.get(c)){
stk.pop();
}else{
return false;
}
} else{
stk.push(c);
}
// System.out.println("栈的改变");
// for(Object o:stk) {
// System.out.println(o);
// }
}
return stk.isEmpty();
}
}