leetcode150

public class Solution
    {
        public int EvalRPN(string[] tokens)
        {
            Stack<int> ST_NUM = new Stack<int>();
            foreach (var to in tokens)
            {
                if (to == "+" || to == "-" || to == "*" || to == "/")
                {
                    var num1 = ST_NUM.Pop();
                    var num2 = ST_NUM.Pop();
                    if (to == "+")
                    {
                        var num = num2 + num1;
                        ST_NUM.Push(num);
                    }
                    else if (to == "-")
                    {
                        var num = num2 - num1;
                        ST_NUM.Push(num);
                    }
                    else if (to == "*")
                    {
                        var num = num2 * num1;
                        ST_NUM.Push(num);
                    }
                    else if (to == "/")
                    {
                        var num = num2 / num1;
                        ST_NUM.Push(num);
                    }
                }
                else
                {
                    var num = Convert.ToInt32(to);
                    ST_NUM.Push(num);
                }
            }
            var result = ST_NUM.Pop();
            return result;
        }
    }

补充一个python的实现:

 1 import math
 2 class Solution:
 3     def __init__(self):
 4         self.symbollist = set()
 5         self.symbollist.add('+')
 6         self.symbollist.add('-')
 7         self.symbollist.add('*')
 8         self.symbollist.add('/')
 9 
10     def isSymbol(self,string):
11         if string in self.symbollist:
12             return True
13         else:
14             return False
15     def cal(self,num1,num2,sym):
16         if sym == '+':
17             return num1 + num2
18         elif sym == '-':
19             return num2 - num1
20         elif sym == '*':
21             return num1 * num2
22         else:
23             dd = num2 / num1
24             if dd < 0:
25                 dd = math.ceil(dd)
26             else:
27                 dd = math.floor(dd)
28             return dd
29 
30     def evalRPN(self, tokens: 'List[str]') -> int:
31         numstack = []
32         r = 0
33         for s in tokens:
34             if self.isSymbol(s):
35                 num1 = numstack.pop(-1)
36                 num2 = numstack.pop(-1)
37                 r = self.cal(num1,num2,s)
38                 numstack.append(r)
39             else:
40                 numstack.append(int(s))
41         return numstack[0]
原文地址:https://www.cnblogs.com/asenyang/p/9826672.html