语言:JAVA
思路:1、顺序遍历数组中的内容,如果不是'+'、'-'、'*'、'/'中的一个则入栈。
2、若是'+'、'-'、'*'、'/'中的一个则从栈中弹出两个数,注意,先弹出的为第二操作数,后弹出的为第一操作数。执行number1 operator number2后将结果重新压入栈中。
3、当遍历完数组后,从栈可取出结果。
代码:
public class Solution {
public int evalRPN(String[] tokens) {
Stack<Integer> number = new Stack<Integer>();
String operator = "+-*/";
for (int i=0; i<tokens.length; i++) {
Integer newOne = null;
if (operator.contains(tokens[i])) {
Integer second = number.pop();
Integer first = number.pop();
if (tokens[i].equals("+")) {
newOne = first + second;
} else if (tokens[i].equals("-")) {
newOne = first - second;
} else if (tokens[i].equals("*")) {
newOne = first * second;
} else if (tokens[i].equals("/")) {
newOne = first / second;
}
} else {
newOne = new Integer(tokens[i]);
}
number.push(newOne);
}
return number.pop().intValue();
}
}