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
1 public class Solution{ 2 public int evalRPN(String[] tokens) { 3 Stack<Integer> nums = new Stack<Integer>(); 4 HashSet<String> opers = new HashSet<String>(); 5 opers.add("+"); 6 opers.add("-"); 7 opers.add("/"); 8 opers.add("*"); 9 int length = tokens.length; 10 for(int i = 0; i < length; ++i){ 11 if(opers.contains(tokens[i])){ 12 int b = nums.pop(); 13 int a = nums.pop(); 14 nums.push(doOpers(a, b, tokens[i])); 15 } 16 else 17 nums.push(Integer.parseInt(tokens[i])); 18 } 19 return nums.pop(); 20 } 21 22 //I used java 7. 23 public int doOpers(int a , int b, String opers){ 24 int result = 0; 25 switch(opers){ 26 case "+": result = a + b; 27 break; 28 case "-": result = a - b; 29 break; 30 case "*": result = a * b; 31 break; 32 case "/": result = a / b; 33 break; 34 } 35 return result; 36 } 37 }