首页 > 代码库 > 150. Evaluate Reverse Polish Notation QuestionEditorial Solution

150. Evaluate Reverse Polish Notation QuestionEditorial Solution

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只存数字,遇到operator则pop两个数字并进行计算,然后将结果存stack。最后stack的第一个元素就是答案。
注意 - 与 / 的差别, 先pop的值在算符右边。

public int EvalRPN(string[] tokens) {        Stack<int> stack = new Stack<int>();        for(int i = 0;i< tokens.Count();i++)        {            if(tokens[i] == "+")            {                stack.Push(stack.Pop() + stack.Pop());            }            else if(tokens[i] == "-")            {                stack.Push(-1*stack.Pop() + stack.Pop());            }            else if(tokens[i] == "*")            {                stack.Push(stack.Pop() * stack.Pop());            }            else if(tokens[i] == "/")            {                int a = stack.Pop();                int b = stack.Pop();                                stack.Push(b / a);            }            else            {                stack.Push(Int32.Parse(tokens[i]));            }        }        return stack.Peek();    }

 

150. Evaluate Reverse Polish Notation QuestionEditorial Solution