Evaluate Reverse Polish Notation
问题:
Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are +
, -
, *
, /
. Each operand may be an integer or another expression.
思路:
栈的经典应用
我的代码:
public class Solution { public int evalRPN(String[] tokens) { if(tokens == null || tokens.length == 0) return 0; Stack<Integer> stack = new Stack<Integer>(); for(int i = 0; i < tokens.length; i++) { String str = tokens[i]; if(isOperator(str)) { int one = stack.pop(); int two = stack.pop(); stack.push(getResult(two, one, str)); } else { stack.push(Integer.valueOf(str)); } } return stack.isEmpty() ? 0 : stack.pop(); } public int getResult(int one, int two, String str) { switch(str) { case "+": return one + two; case "-": return one - two; case "*": return one * two; case "/": return one / two; } return 0; } public boolean isOperator(String str) { if(str.equals("+") || str.equals("-") || str.equals("*") || str.equals("/")) return true; return false; } }
Evaluate Reverse Polish Notation
原文:http://www.cnblogs.com/sunshisonghit/p/4381795.html