题目:https://oj.leetcode.com/problems/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
分析:使用栈即可。遇到运算符,弹出两个操作数进行运算,把运算结果再压入栈;遇到操作数,直接进栈。最后把栈中最后一个元素(即计算结果)返回。
源码:Java版本
public class Solution { public int evalRPN(String[] tokens) { Stack<Integer> stack=new Stack<Integer>(); int x,y; for(String str : tokens) { if(str.equals("+")) { stack.push(stack.pop()+stack.pop()); }else if(str.equals("-")) { x=stack.pop(); y=stack.pop(); stack.push(y-x); }else if(str.equals("*")) { stack.push(stack.pop()*stack.pop()); }else if(str.equals("/")) { x=stack.pop(); y=stack.pop(); stack.push(y/x); }else { stack.push(Integer.parseInt(str)); } } return stack.pop(); } }