stack.pop()
stack.peek()
相同点:大家都返回栈顶的值。
不同点:peek 不改变栈的值(不删除栈顶的值),pop会把栈顶的值删除。
举例(Leetcode 20.有效的括号):
class Solution {
public boolean isValid(String s) {
if(s.length()%2==0){
Stack<Character> stack=new Stack<>();
for(int i=0;i<s.length();i++){
char c=s.charAt(i);
if(c=='('||c=='['||c=='{'){
stack.push(c);
}
else if(c==')'){
if(!stack.isEmpty()&&stack.peek()=='('){stack.pop();}
else{return false;}
}
else if(c=='}'){
if(!stack.isEmpty()&&stack.peek()=='{'){stack.pop();}
else{return false;}
}
else{
if(!stack.isEmpty()&&stack.peek()=='['){stack.pop();}
else{return false;}
}
}
return stack.isEmpty();
}
return false;
}
}
class Solution {
public boolean isValid(String s) {
while(s.contains("()")||s.contains("[]")||s.contains("{}")){
if(s.contains("()")){
s=s.replace("()","");
}
if(s.contains("{}")){
s=s.replace("{}","");
}
if(s.contains("[]")){
s=s.replace("[]","");
}
}
return s.length()==0;
}
}