题目:
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
链接: http://leetcode.com/problems/evaluate-reverse-polish-notation/
6/13/2017
15ms, 42%
用stack来保存之前的值,注意最后一步返回stack的剩余元素
1 public class Solution { 2 public int evalRPN(String[] tokens) { 3 if (tokens == null) { 4 return 0; 5 } 6 Stack<Integer> stack = new Stack<Integer>(); 7 int result = 0; 8 for (int i = 0; i < tokens.length; i++) { 9 if (tokens[i].equals("+") || tokens[i].equals("-") || tokens[i].equals("*") || tokens[i].equals("/")) { 10 int operand2 = stack.pop(); 11 int operand1 = stack.pop(); 12 if (tokens[i].equals("+")) { 13 result = operand1 + operand2; 14 } else if (tokens[i].equals("-")) { 15 result = operand1 - operand2; 16 } else if (tokens[i].equals("*")) { 17 result = operand1 * operand2; 18 } else { 19 result = operand1 / operand2; 20 } 21 stack.push(result); 22 } else { 23 stack.push(Integer.parseInt((tokens[i]))); 24 } 25 } 26 return stack.pop(); 27 } 28 }
更多讨论
https://discuss.leetcode.com/category/158/evaluate-reverse-polish-notation