题目
Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are
+
,-
,*
,/
. Each operand may be an integer or another expression.Some examples:
["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
方法
public int evalRPN(String[] tokens) {
int len = tokens.length;
Stack<Integer> stack = new Stack<Integer>();
for (int i = 0; i < len; i++) {
String str = tokens[i];
char ch = str.charAt(0);
if ((ch >= '0' && ch <= '9') || str.length() > 1) {
int num = Integer.parseInt(str);
stack.add(num);
} else {
int num1 = stack.pop();
int num2 = stack.pop();
int num = 0;
switch(ch) {
case '+' : num = num1 + num2;
stack.add(num);
break;
case '-' : num = num2 - num1;
stack.add(num);
break;
case '*' : num = num2 * num1;
stack.add(num);
break;
case '/' : num = num2 / num1;
stack.add(num);
break;
}
}
}
return stack.peek();
}