栈方法一
public static boolean isValid(String s) {
if (s==null||s.length()==0) return true;
if (s.length()%2==1) return false;
Map<Character,Character> gz=new HashMap<>(){{
put(')','(');
put('}','{');
put(']', '[');
}};
Deque<Character> stack=new ArrayDeque<>();
for (char c:s.toCharArray()){
if (gz.containsKey(c)){
if (stack.isEmpty()||stack.peek()!=gz.get(c))
return false;
stack.pop();
}else stack.push(c);
}
return stack.isEmpty();
}
栈方法二
public static boolean isValid(String s) {
if (s==null||s.length()==0) return true;
if (s.length()%2==1) return false;
Map<Character,Character> gz=new HashMap<>(){{
put(')','(');
put('}','{');
put(']', '[');
}};
Deque<Character> stack=new ArrayDeque<>();
for (char c:s.toCharArray()){
if (c=='{'||c=='['||c=='('){
stack.push(c);
}else {
if (stack.size()==0||gz.get(c) !=stack.pop())
{ return false; }
}
}
return stack.size()==0;
}
学以致用
isEmpty()
判断当前栈是否为空(boolean)peek()
获得当前栈顶元素(synchronized E)pop()
获得当前栈顶元素并删除(synchronized E)push(E object)
将元素加入栈顶(E)