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]
  • 相关阅读:
    直接插入排序
    希尔排序
    堆排序
    红黑树
    hashMap原理
    JAVA随笔4
    JAVA随笔3(集合框架,流)
    Linux环境下如何生成core文件
    Centos6 升级glibc-2.17,解决Requires: libc.so.6(GLIBC_2.14)(64bit)错误解决方法
    MediaWiki搭建步骤
  • 原文地址:https://www.cnblogs.com/asenyang/p/9826672.html
Copyright © 2011-2022 走看看