leetcode-150. 逆波兰表达式求值(栈)

leetcode-150. 逆波兰表达式求值(栈)根据 逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。 示例 1:输入:tokens = [“2″,”1″,”+”,”3″,”*”]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例 2:输入:tokens = [“4″,”13″,”5″,”/”,”+”]输

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

根据 逆波兰表示法,求表达式的值。

有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。

说明:

整数除法只保留整数部分。
给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
 

示例 1:

输入:tokens = ["2","1","+","3","*"]
输出:9
解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9
示例 2:

输入:tokens = ["4","13","5","/","+"]
输出:6
解释:该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6
示例 3:

输入:tokens = ["10","6","9","3","+","-11","*","/","*","17","+","5","+"]
输出:22
解释:
该算式转化为常见的中缀算术表达式为:
  ((10 * (6 / ((9 + 3) * -11))) + 17) + 5
= ((10 * (6 / (12 * -11))) + 17) + 5
= ((10 * (6 / -132)) + 17) + 5
= ((10 * 0) + 17) + 5
= (0 + 17) + 5
= 17 + 5
= 22
 

提示:

1 <= tokens.length <= 104
tokens[i] 要么是一个算符("+""-""*""/"),要么是一个在范围 [-200, 200] 内的整数
class Solution { 
   
public:
    bool isalpha(string &word){ 
   
        if(word == "+" || word == "-" || word == "*" || word == "/")return false;
        return true;
    }
    int get(string &word){ 
   
        int sum = 0;
        bool flag = false;
        if(word[0] == '-')flag = true;
        for(int i = word.size() - 1,index = 1;i >= (flag ? 1 : 0);i --,index *= 10){ 
   
            sum += (word[i] - '0') * index;
        }
        return flag ? -sum : sum;
    }
    int op(int a,int b,string op){ 
   
        if(op == "+")return a + b;
        else if(op == "-")return a - b;
        else if(op == "*")return a * b;
        else return a / b;
    }
    int evalRPN(vector<string>& tokens) { 
   
        stack<int>s;
        int num = 0;
        for(auto &w : tokens){ 
   
            if(isalpha(w)){ 
   
                s.push(get(w));
            }
            else{ 
   
                int a = s.top();
                s.pop();
                int b = s.top();
                s.pop();
                s.push(op(b,a,w));
            }
        }
        return s.top();
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169066.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 深度学习中学习率和batchsize对模型准确率的影响

    本内容来自其他的人解析,参考链接在最后的注释。1.前言目前深度学习模型多采用批量随机梯度下降算法进行优化,随机梯度下降算法的原理如下:n是批量大小(batchsize),η是学习率(learningrate)。可知道除了梯度本身,这两个因子直接决定了模型的权重更新,从优化本身来看它们是影响模型性能收敛最重要的参数。学习率直接影响模型的收敛状态,batchsize则影响模型的泛化性能,两者又是分子分母的直接关系,相互也可影响,因此这一次来详述它们对模型性能的影响。2.学习率如何影响模型性.

    2022年4月17日
    83
  • django的orm查询方法_django获取get请求参数

    django的orm查询方法_django获取get请求参数前言查找是数据库操作中一个非常重要的技术。查询一般就是使用filter、exclude以及get三个方法来实现。我们可以在调用这些方法的时候传递不同的参数来实现查询需求。在ORM层面,这些查询条件都

    2022年7月31日
    5
  • 静态路由介绍_静态路由下一跳地址类型

    静态路由介绍_静态路由下一跳地址类型网络上通过各种设备传递数据,最常见的就是路由器和交换机。本篇介绍路由器的静态路由协议。先简要说一下路由条目和路由表(熟悉的可略过):一个数据包从源IP地址到目标IP地址间可能穿过多个路由器,也可能有多条路径通往目标IP地址。那路由器收到数据后,如何知道哪个端口能通往目标地址呢?如果多个端口都可通往目标地址,选择用哪个端口才是最优路径呢?依据的就是路由表。路由表就是路由器的灵魂,是多个路由条目的…

    2022年9月24日
    4
  • 雅虎好用吗_b站上为什么不建议收藏

    雅虎好用吗_b站上为什么不建议收藏&#13; 这几天开始使用雅虎收藏+,应该说这是雅虎中国目前最Web2.0的产品,虽然有del.icio.us在美国的经验,但收藏+并不是del.icio.us的简单汉化。详细的介绍、完备的各个浏览器下的插件,对于从del.icio.us用户来说几乎没有任何使用障碍.虽然有着不少的优点,我觉得这个产品还需要进一步改进:1)提供给用户静态URL.收藏…

    2025年8月1日
    5
  • Android之drawable state各个属性具体解释[通俗易懂]

    Android之drawable state各个属性具体解释

    2022年1月26日
    34
  • Linux京东签到教程,京东POP店铺签到有礼操作指南「建议收藏」

    Linux京东签到教程,京东POP店铺签到有礼操作指南「建议收藏」目录1产品概述2POP签到有礼设置2.1创建签到2.1.1第一步:签到活动设置2.1.2第二步:签到规则设置—-店铺抽奖2.1.3第二步:签到规则设置—-连续签到2.1.4第三步:选择引流商品2.1.5第四步:完成创建2.2签到有礼-当前活动2.3签到有礼-全部活动2.4用户前台入口3京麦签到工具介绍1产品概述1.产品价值:提高C端用户到店频次,提高店铺粘性,借机达到商品转化的目的。2…

    2022年9月18日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号