zoukankan      html  css  js  c++  java
  • 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]
  • 相关阅读:
    变量与常量
    .面向过程和面向对象的区别
    .JDK,JRE,JVM三者关系
    DEV C++, 利用链表实现目录内所有文件列表显示
    swith的用法和注意事项?
    Java排序(一)实现类的排序
    C++数据结构——树(基础知识篇)
    杀进程
    监控 monitor java 代码
    putty 直接连 快捷键方式
  • 原文地址:https://www.cnblogs.com/asenyang/p/9826672.html
Copyright © 2011-2022 走看看