Java for LeetCode 150 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.

Some examples:

  ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
  ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
解题思路:

计算逆波兰表达式,Stack的经典应用,JAVA实现如下:

	public int evalRPN(String[] tokens) {
		if (tokens == null || tokens.length == 0)
			return 0;
		Stack<Integer> stack = new Stack<Integer>();
		for (String str : tokens) {
			if (str.length() > 1 || Character.isDigit(str.charAt(0)))
				stack.push(Integer.parseInt(str));
			else {
				int a = stack.pop();
				int b = stack.pop();
				if (str.equals("+"))
					stack.push(b + a);
				else if (str.equals("-"))
					stack.push(b - a);
				else if (str.equals("*"))
					stack.push(b * a);
				else if (str.equals("/"))
					stack.push(b / a);
			}
		}
		return stack.pop();
	}

 

posted @ 2015-06-05 09:55  TonyLuis  阅读(168)  评论(0编辑  收藏  举报