leetcode 150. 逆波兰表达式求值

news2024/11/24 13:43:06

2023.6.20

        后缀表达式也是栈的经典应用,注意好细节就行,下面直接上代码:

class Solution {
public:
    int evalRPN(vector<string>& tokens) 
    {
        stack<long long> stk;
        long long result = 0;

        for(int i=0; i<tokens.size(); i++)
        {
            if(tokens[i] != "+" && tokens[i] != "-" && tokens[i] != "*" && tokens[i] != "/")
            {
                stk.push(stoll(tokens[i]));
            }
            else
            {
                long long num1 = stk.top();
                stk.pop();
                long long num2 = stk.top();
                stk.pop();

                if(tokens[i] == "+")
                {
                    result = num1 + num2;
                    stk.push(result);
                }
                else if(tokens[i] == "-")
                {
                    result = num2 - num1;
                    stk.push(result);
                }
                else if(tokens[i] == "*")
                {
                    result = num1 * num2;
                    stk.push(result);
                }
                else if(tokens[i] == "/")
                {
                    result = num2 / num1;
                    stk.push(result);
                }
            }
        }
        return stk.top();
    }
};

         有些细节提一下:

  • 为了防止溢出所以使用long long
  • 字符串数组没法直接丢到<int>类型的栈中,需要使用stoll将string转换成long long。 类似的转换还有stoi  stol等。
  • 每次会把临时结果用result保存,然后丢到栈里,最后返回栈的顶部就是结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/666549.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

兼容性测试对于软件测试来说重要吗?

该测试是软件测试的一个重要部分&#xff0c;它也获得了越来越多的关注和重视。那么&#xff0c;兼容性测试对于软件测试来说重要吗&#xff1f;我们一起往下了解。 首先&#xff0c;兼容性测试可以确保软件在不同的操作系统、硬件平台和设备上能够正常运行。在产品开发过程中&…

Git进阶系列 | 2. Git中的分支策略

Git是最流行的代码版本控制系统&#xff0c;这一系列文章介绍了一些Git的高阶使用方式&#xff0c;从而帮助我们可以更好的利用Git的能力。本系列一共8篇文章&#xff0c;这是第2篇。原文&#xff1a;Branching Strategies in Git[1] 几乎所有的版本控制系统(VCS)都有某种类型的…

【开发细节】SpringBoot项目将接口从HTTP换为HTTPS

证书准备 首先需要生成一个 SSL 证书&#xff0c;可以使用 OpenSSL 工具或者自己的 CA 颁发机构来生成证书&#xff0c;这里就不赘述了。如果是测试阶段&#xff0c;也可以使用 self-signed certificate。 直接使用jdk的keytool生成&#xff0c;具体操作方法如下&#xff1a; …

一个好看美观的登录注册界面的实现

序言&#xff1a;之前介绍那个博客&#xff0c;然后自己搞了这个界面。最近有人和我要&#xff0c;把代码给大家贴出来&#xff0c;提供参考。 首先是这个界面哈 <!DOCTYPE html> <html lang"en"> <head><script src"../static/lib/jquer…

不走弯路!记一个Appium框架运行的实例

目录 前言&#xff1a; 一、框架环境安装 二、测试流程操作 1、安装APK 2、启动 3、服务参数配置 4、脚本录制操作 5、脚本编写 6、脚本执行 三、测试总结 前言&#xff1a; Appium是一个开源的自动化测试框架&#xff0c;用于移动应用程序的自动化测试。它支持在iOS和Andro…

python:使用Scikit-image库的slic函数分割遥感图像

作者:CSDN @ _养乐多_ 本文记录了使用Scikit-image库的skimage.segmentation模块中的slic函数,进行超像素分割的代码。 文章目录 一、slic函数详解二、代码一、slic函数详解 在Scikit-image库的skimage.segmentation模块中,slic函数用于进行超像素分割。该函数的参数含义如…

62、基于51单片机手机APP蓝牙调试助手控制四个LED灯的开关系统设计(程序+原理图+PCB源文件+Proteus仿真+外文文献翻译+元器件清单等)

方案选择 单片机的选择 方案一&#xff1a;AT89C52是美国ATMEL公司生产的低电压&#xff0c;高性能CMOS型8位单片机&#xff0c;器件采用ATMEL公司的高密度、非易失性存储技术生产&#xff0c;兼容标准MCS-51指令系统&#xff0c;片内置通用8位中央处理器(CPU)和Flash存储单元…

CRM选型之CRM系统要不要自研

如今在外部激烈的竞争环境下&#xff0c;CRM因其具有有效管理客户资源&#xff0c;提升客户体验和满意度的能力&#xff0c;而逐渐成为了企业在运营中必不可收的一部分。然而&#xff0c;在引入CRM系统时&#xff0c;企业面临着选型难题&#xff1a;是自研还是购买第三方的CRM系…

Qt利用paintEvent绘制双Y轴坐标折线图

在项目中&#xff0c;根据需求需要开发双Y轴坐标折线图&#xff0c;但是由于它有多个图层&#xff0c;如果使用QChart绘制的话&#xff0c;达不到需求的要求&#xff0c;只能自己绘制&#xff0c;具体的利用translate()接口将坐标系统移动到界面的左下角(30, height() - 50)处&…

IDEA启动终端报错: Cannot open Local Terminal Failed to start ***

1.问题 打开IDEA后&#xff0c;启动终端发现终端报错没有办法正常使用&#xff0c;错误提示 Cannot open Local Terminal Failed to start [powershell.exe] in D:\vue_admin Error running process: CreateProcess failed. Code 2 See IDE log (Help | Show Log in Explorer…

开源创新,燃起未来的火花

尊敬的各位嘉宾、领导、专家、企业代表、优秀开发者和创新人才们&#xff1a; 在2023年6月11日至13日&#xff0c;开放原子全球开源峰会盛大召开&#xff0c;汇集了众多业界精英和开源领域的专家学者&#xff0c;为探索开源创新的辉煌未来共同助力。作为一名开源技术爱好者&am…

开放式耳机的优缺点有哪些?目前有什么开放式耳机推荐?

什么是开放式耳机&#xff1f; 从名字上理解就是开放样式的耳机&#xff0c;其实也确实如此&#xff0c;开放式耳机是不需要封闭耳道来传输声音&#xff0c;主要是通过耳骨振动传递或者声波震动耳膜&#xff0c;两者声音传递的方式都不用完全封闭耳道&#xff0c;可以让耳道对…

COMSOL导入图片几何模型-以二维多孔介质为例

建模教程 首先获取一张多孔介质图片&#xff0c;这里就以COMSOL官网教程图片为例 通过软件将png格式的图片转换为DXF格式文件&#xff0c;也就是AutoCAD支持的文件&#xff1a; 下一步打开COMSOL软件建立二维模型&#xff0c;导入事先准备好的dxf模型&#xff0c;需要注意导入…

C++中String的语法及常用接口的底层实现详解

在C语言中&#xff0c;我们知道处理字符串所用的类型是 char []或者char* 。字符串是以‘\0’结尾的。在C中&#xff0c;string 是一个标准库类&#xff08;class&#xff09;&#xff0c;用于处理字符串。它提供了一种更高级、更便捷的字符串操作方式&#xff0c;string 类提供…

mysql 开启binlog

1&#xff09;检查binlog功能是否有开启 mysql> show variables like log_bin; ---------------------- | Variable_name | Value | ---------------------- | log_bin | OFF | ---------------------- 1 row in set (0.00 sec) &#xff08;2&#xff09;如果显…

用视频制作gif动画的小窍门!知识分享

Gif动画图片是当下最为流行的一种图片格式&#xff0c;它的内容丰富画面生动&#xff0c;能够快速抓住人们的眼球。有非常好信息传递效果&#xff0c;但是很多小伙伴不知道这种gif动画怎么制作的。别担心&#xff0c;接下来小编就跟大家分享一下利用视频制作gif动画的小窍门&am…

Docker Compose资源限制

一、资源限制原因&#xff1a; 防止容器占用过多资源,影响其他容器或宿主机保证容器稳定运行,避免OOM等情况.OOM现象&#xff1a;根据优先机制kill掉宿主机上最高的进程从而来释放空间&#xff0c;只要是宿主机的进程都可能被kill掉的。进行资源隔离,提高安全性 二、Docker Com…

eclipse (C/C++) 常用设置记录

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台&#xff1b;现公司用其作为开发单片机的IDE&#xff1b;因此记录一下常用的配置方法&#xff1b; 文章目录 零、常用默认快捷键一、高亮相同变量二、修改高亮变量颜色三、在整个工程内搜索某个函数四、切换主题五、改变字…

主分区,逻辑分区,扩展分区有什么区别

1.地位不同 逻辑分区属于扩展分区&#xff0c;扩展分区属于主分区。 给新硬盘上建立分区时都要遵循以下的顺序&#xff1a;建立主分区→建立扩展分区→建立逻辑分区→激活主分区→格式化所有分区。 2.位置不同 主分区又叫做引导分区&#xff0c;最多只能创建四个。 扩展分…

软考A计划-系统集成项目管理工程师-信息化知识(四)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…