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

 1 public class Solution {
 2     public int EvalRPN(string[] tokens) {
 3         if (tokens.Length == 0) return 0;
 4         
 5         var stack = new Stack<int>();
 6         
 7         foreach (var t in tokens)
 8         {
 9             if (t == "+")
10             {
11                 var op1 = stack.Pop();
12                 var op2 = stack.Pop();
13                 
14                 stack.Push(op1 + op2);
15             }
16             else if (t == "-")
17             {
18                 var op1 = stack.Pop();
19                 var op2 = stack.Pop();
20                 
21                 stack.Push(op2 - op1);
22             }
23             else if (t == "*")
24             {
25                 var op1 = stack.Pop();
26                 var op2 = stack.Pop();
27                 
28                 stack.Push(op2 * op1);
29             }
30             else if (t == "/")
31             {
32                 var op1 = stack.Pop();
33                 var op2 = stack.Pop();
34                 
35                 stack.Push(op2 / op1);
36             }
37             else
38             {
39                 stack.Push(Int32.Parse(t));
40             }
41         }
42         
43         return stack.Pop();
44     }
45 }

 

posted @ 2017-11-23 04:17  逸朵  阅读(121)  评论(0)    收藏  举报