//逆波兰表达式
import java.util.Stack;
public class Solution {
public int evalPRN(String[] tokens){
Stack<Integer>stack=new Stack<>();
for(int i=0;i<tokens.length;i++){
String val=tokens[i];
if(isOperation(val) == false){
stack.push(Integer.parseInt(val));
}else{
int num2 = stack.pop();
int num1 = stack.pop();
switch(val){
case "+":
return num1+num2;
stack.push(num1+num2);
break;
case "-":
return num1-num2;
stack.push(num1-num2);
break;
case "*":
return num1*num2;
stack.push(num1*num2);
break;
case "/":
return num1/num2;
stack.push(num1/num2);
break;
}
}
}
}
private boolean isOperation(String x){
if(x.equals("+")||x.equals("-")||x.equals("*")||x.equals("/")){
return true;
}
return false;
}
}
//一个数组是否为另一个数组的出栈顺序
import java.util.Stack;
public class Solution {
public boolean IsPopOrder(int[] pushA,int[] popA){
Stack<Integer>stack=new Stack<>();
for(int i=0;i<pushA.length;i++){
stack.push(pushA[i]);
int j=0;
while(j<popA.length&&!stack.empty()&&stack.peek()==popA[j]){
stack.pop();
j++;
}
}
return stack.empty();
}
}