Solution URL
https://leetcode.com/submissions/detail/412013996/
代码
class Solution {
public int evalRPN(String[] tokens) {
//Time: O(n)
//Space: O(n)
Stack<Integer> s = new Stack<>();
List<String> l = Arrays.asList("+", "-", "*", "/");
for(int i = 0; i < tokens.length; i++){
//遍历数组,如果是操作符,就从栈中弹出两个元素进行操作
if(l.contains(tokens[i])){//如果是操作符
//弹出两个数
int num1 = s.pop();
int num2 = s.pop();
//存储运算的结果
int temp = 0;
//根据操作符做相应的运算
switch(tokens[i])
{
//it must be num2 first then comes num1!!!
case "+":
temp = num2 + num1;
break;
case "-":
temp = num2 - num1;
break;
case "*":
temp = num2 * num1;
break;
case "/":
temp = num2 / num1;
break;
}
//将运算的结果存入stack
s.push(temp);
}else{//如果是数字
//若为数字,则压入栈内
s.push(Integer.parseInt(tokens[i]));
}
}
return s.pop();
}
}