1
+ /*
2
+ Author: Andy, nkuwjg@gmail.com
3
+ Date: Jan 31, 2015
4
+ Problem: Evaluate Reverse Polish Notation
5
+ Difficulty: Easy
6
+ Source: https://oj.leetcode.com/problems/evaluate-reverse-polish-notation/
7
+ Notes:
8
+ Evaluate the value of an arithmetic expression in Reverse Polish Notation.
9
+ Valid operators are +, -, *, /. Each operand may be an integer or another expression.
10
+ Some examples:
11
+ ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
12
+ ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
13
+ Solution: stack.
14
+ */
15
+
16
+ public class Solution {
17
+ public int evalRPN (String []tokens ) {
18
+ Stack <Integer >stk =new Stack <Integer >();
19
+ for (int i =0 ;i <tokens .length ; ++i ) {
20
+ if ((tokens [i ].compareTo ("+" ) !=0 ) && (tokens [i ].compareTo ("-" ) !=0 )
21
+ && (tokens [i ].compareTo ("*" ) !=0 ) && (tokens [i ].compareTo ("/" ) !=0 )) {
22
+ stk .push (Integer .parseInt (tokens [i ]));
23
+ }else {
24
+ int op2 =stk .pop ();
25
+ int op1 =stk .pop ();
26
+ int res =0 ;
27
+ if (tokens [i ].compareTo ("+" ) ==0 )
28
+ res =op1 +op2 ;
29
+ else if (tokens [i ].compareTo ("-" ) ==0 )
30
+ res =op1 -op2 ;
31
+ else if (tokens [i ].compareTo ("*" ) ==0 )
32
+ res =op1 *op2 ;
33
+ else if (tokens [i ].compareTo ("/" ) ==0 )
34
+ res =op1 /op2 ;
35
+ stk .push (res );
36
+ }
37
+ }
38
+ return stk .pop ();
39
+ }
40
+ }