此处输入一个字符串数组,包括数字,和±/,最少保证数字足够实现才行,比如
[“2”, “1”, “+”, “3”, ""] ----》((2 + 1) * 3) = 9
public int evalRPN(String[] tokens) {
Stack<Integer> stack = new Stack<>();
int op1; //这是下一个元素进栈之前的两个栈里面的两个元素
int op2;
for (String s: tokens) {
switch (s){
case "+":
op2 = stack.pop();
op1 = stack.pop();
stack.push(op1 + op2);
break;
case "-":
op2 = stack.pop();
op1 = stack.pop();
stack.push(op1 - op2);
break;
case "*":
op2 = stack.pop();
op1 = stack.pop();
stack.push(op1 * op2);
break;
case "/":
op2 = stack.pop();
op1 = stack.pop();
stack.push(op1 / op2);
break;
default://如果都不是的话,直接就放到栈里面去,注意要把字符串转化为整形
stack.push(Integer.valueOf(s));
break;
}
}
return stack.pop();
}