注意以下几点
1. 原始字符数组输入的顺序,将字符装入list后,需要从第一个字符开始pop,所以代码使用add
2. 使用两个list进行计算
3. 遇到操作符后,运算的两个数字是有序的,代码中为a,b的运算顺序
public class Solution {
public int evalRPN(String[] tokens) {
List<String> operations = new ArrayList<String>();
operations.add("+");
operations.add("-");
operations.add("*");
operations.add("/");
LinkedList<String> stack = new LinkedList<String>();
LinkedList<Integer> nums = new LinkedList<Integer>();
for (String ele : tokens){
stack.add(ele);
}
while (!stack.isEmpty()){
String ele = stack.pop();
if(operations.contains(ele)){
int b = nums.pop();
int a = nums.pop();
int result;
if(ele.equals("+")){
result = a+b;
}else if(ele.equals("-")){
result = a-b;
}else if(ele.equals("*")){
result = a*b;
}else{
result = a/b;
}
nums.push(result);
} else {
nums.push(Integer.parseInt(ele));
}
}
return nums.pop();
}
}