leetcode 的题目: 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
解题思路就是利用栈的先进后出的特性
import java.util.*; public class Solution { public int evalRPN(String[] tokens) { if(tokens == null){ return -1; }
Stack<Integer> stack=new Stack(); for(int i=0;i<tokens.length;i++){ try{ int num=Integer.parseInt(tokens[i]); stack.add(num); }catch(Exception e){ int a=stack.pop(); int b=stack.pop(); stack.push(getIt(a,b,tokens[i])); } } return stack.pop(); } public static int getIt(int a,int b,String str){ switch(str){ case "+": return b+a; case "-": return b-a; case "/": return b/a; case "*": return b*a; default : return 0; } }}