1 public class Solution { 2 public int evalRPN(String[] tokens) { 3 String operations ="+-*/"; 4 Stack<String> stack = new Stack<String>(); 5 for(String s:tokens){ 6 if(!operations.contains(s)){ 7 stack.push(s); 8 } 9 else{ 10 int d1 = Integer.valueOf(stack.pop()); 11 int d2 = Integer.valueOf(stack.pop()); 12 int i = operations.indexOf(s); 13 switch(i){ 14 case 0: stack.push(String.valueOf(d1+d2)); break; 15 case 1: stack.push(String.valueOf(d2-d1)); break; 16 case 2: stack.push(String.valueOf(d1*d2));break; 17 case 3: stack.push(String.valueOf(d2/d1));break; 18 } 19 } 20 } 21 return Integer.valueOf(stack.pop()); 22 } 23 }
["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
Evaluate Reverse Polish Notation
原文:http://www.cnblogs.com/krunning/p/3563987.html