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

逆波兰表达式,栈的应用

注意减和除的两个数哪个在前,哪个在后

这题的数据不够卡,如果最后结果是int,但是中间也可以溢出啊,写的时候突然想到,懒得改就浪交了,居然过了。

class Solution {
public:
    int toint(string s)
    {
        int res = 0,i = 0;
        if(s[0] == '-') i = 1;
        for(; i < s.size(); i++)
        {
            res *=10;
            res += s[i]-'0';
        }
        return s[0] == '-' ? -res : res;
    }
    int evalRPN(vector<string>& tokens) 
    {
        stack<int> s;
        for(int i = 0; i < tokens.size(); i++)
        {
            int a, b;
            if(tokens[i] == "+")
                a = s.top(), s.pop(), b = s.top(), s.pop(), s.push(a+b);
            else if(tokens[i] == "-")
                a = s.top(), s.pop(), b = s.top(), s.pop(), s.push(b-a);
            else if(tokens[i] == "*")
                a = s.top(), s.pop(), b = s.top(), s.pop(), s.push(a*b);
            else if(tokens[i] == "/")
                a = s.top(),s.pop(), b = s.top(), s.pop(), s.push(b/a);
            else
                s.push(toint(tokens[i]));
        }
        return s.top();
    }
};

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据结构与算法

洛谷P2925 [USACO08DEC]干草出售Hay For Sale

题目描述 Farmer John suffered a terrible loss when giant Australian cockroaches ate ...

31040
来自专栏androidBlog

装饰者模式及其应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/details/...

40120
来自专栏码匠的流水账

聊聊jesque的WorkerImpl与WorkerPool

Resque是一个使用redis来创建后台任务的ruby组件。而jesque是其java版本。通常用来做延时队列。

8510
来自专栏Java与Android技术栈

Scrypt 不止是加密算法,也是莱特币的挖矿算法

Scrypt不仅计算所需时间长,而且占用的内存也多,使得并行计算多个摘要异常困难,因此利用rainbow table进行暴力攻击更加困难。Scrypt 没有在生...

15540
来自专栏函数式编程语言及工具

FunDA(11)- 数据库操作的并行运算:Parallel data processing

   FunDA最重要的设计目标之一就是能够实现数据库操作的并行运算。我们先重温一下fs2是如何实现并行运算的。我们用interleave、merge、eith...

20880
来自专栏算法修养

FZU 2099 魔法阵(计算几何)

 Problem 2099 魔法阵 Accept: 120    Submit: 289 Time Limit: 1000 mSec    Memory L...

29830
来自专栏大内老A

ASP.NET MVC的Model元数据与Model模板:将”ListControl”引入ASP.NET MVC

我们不仅可以创建相应的模板来根据Model元数据控制种类型的数据在UI界面上的呈现方法,还可以通过一些扩展来控制Model元数据本身。在某些情况下通过这两者的结...

38560
来自专栏Java成神之路

Java企业微信开发_02_通讯录同步

       登录企业微信—>管理工具—>通讯录同步助手—>开启“API接口同步”  ; 开启后,即可看到通讯录密钥,也可设置通讯录API的权限:读取或者编辑通...

1.1K20
来自专栏码匠的流水账

聊聊rocketmq的PushConsumerImpl

io/openmessaging/rocketmq/consumer/PushConsumerImpl.java

21920
来自专栏HansBug's Lab

1751: [Usaco2005 qua]Lake Counting

1751: [Usaco2005 qua]Lake Counting Time Limit: 5 Sec  Memory Limit: 64 MB Submit...

33560

扫码关注云+社区

领取腾讯云代金券