leetcode 150.逆波兰表达式求值

news2024/12/26 9:27:36

⭐️ 题目描述

在这里插入图片描述


🌟 leetcode链接:逆波兰表达式求值

思路: 假设这样一组表达式 { "2" , "1" , "+" , "3" , "*" } 这是一种后缀表达式,首先我们准备一个栈,当如果不是操作符的时候我们就把当前操作数入栈,所以在这一组表达式中 "2" , "1" 不是入栈。入栈的时候我们把 string 转换成 int 使用 stoi() 这样等会更方便我们控制。stack => {2 , 1},当我们遇到操作符的时候,就出栈两次取左右操作数,由于栈是先进后出所以先取出来的是右操作数(对于 + * 操作符操作数的顺序没有影响,但是 - / 会有顺序之分 )
  取出来之后,我们将两个操作数与操作符计算,计算出来的结果继续入栈。stack => {3},继续 "3" 不是操作符入栈,stack => {3 , 3}"*" 是操作符取出栈顶两个元素计算, stack => {9} 最后循环遍历结束,所以最后结果是在栈顶 top 位置上。

代码:

class Solution {
public:
    int evalRPN(vector<string>& tokens) {
        stack<int> filter;
        // 使用栈
        for (int i = 0; i < tokens.size(); i++) {
            if (tokens[i] == "+" ||
                tokens[i] == "-" ||
                tokens[i] == "*" ||
                tokens[i] == "/"
            ) {
                // 取出左右栈操作数
                int right = filter.top();
                filter.pop();
                int left = filter.top();
                filter.pop();
                switch (tokens[i].front()) {
                    case '+':
                        filter.push(left + right);
                        break;
                    case '-':
                        filter.push(left - right);
                        break;
                    case '*':
                        filter.push(left * right);
                        break;
                    case '/':
                        filter.push(left / right);
                        break;
                }
            } else {
                // 不是操作符入栈
                filter.push(stoi(tokens[i]));
            }
        }

        // 最终结果在栈顶
        return filter.top();
    }
};

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

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

相关文章

电动汽车行业,这个技能绝了!

在当今不断演变的汽车工业中&#xff0c;电动汽车已经崭露头角&#xff0c;并迅速改变着我们的出行方式。这种创新的交通方式不仅减少了尾气排放&#xff0c;还为我们带来了更加环保和可持续的未来愿景。在电动汽车的核心&#xff0c;蓄电池技术正发挥着至关重要的作用。 然而&…

阿里巴巴推出D.Design文生图网站(免费10-20张图)

简介&#xff1a; d.design是阿里巴巴推出的一个基于人工智能的设计工具&#xff0c;可以帮助用户轻松创建3D模型和场景。该工具提供了丰富的素材库和功能&#xff0c;可以满足用户的各种需求。 ​堆友堆友是Alibaba Design打造的设计师全成长周期服务平台&#xff0c;围绕品质…

Python中处理异常和错误

作为一种强大且灵活的编程语言&#xff0c;Python 提供了许多机制来处理程序运行过程中可能出现的异常和错误。本文将详细介绍如何在 Python 中以“优雅、高效”的方式进行异常处理&#xff0c;并提供实用技巧帮助开发者更好地应对各种情况。无论您是初学者还是有经验的开发人员…

上行取消指示 DCI format 2_4

上篇介绍了DCI format 2_1的DL传输中断的内容&#xff0c;这篇就看下DCI format 2_4有关的UL 传输取消机制&#xff0c;值得注意的是这里的UL传输针对的是PUSCH和SRS传输。 UL cancellation DCI format 2_4相关机制引入的背景与DCI format 2_1一样&#xff0c;都是因为URLLC和e…

3ds max插件CG MAGIC中的室外功能可以高效出图吗?

使用3ds Max高效出图秘诀有没有什么秘诀呢&#xff1f;如何做到快速出图呢&#xff1f; 3ds max插件CG MAGIC中的室外功能可以高效出图吗&#xff1f; CG MAGIC 是一款基于3DS max深入开发的智能辅助设计插件。 自从CG Magic专业版上线之后&#xff0c;小伙伴们对新功能诀窍…

当浏览器切换到其他标签页或者最小化时,你的js定时器还准时吗?

最近一个项目遇到这个问题&#xff0c;获取北斗授时服务器时间校准本地时间&#xff0c;定时器是需要用到的&#xff0c;大致步骤分为以下几点&#xff1a; 1.定时请求服务器时间 2.根据获取到接口返回时间自动累加 参考&#xff1a; vue.js和原生js时间自动累加功能_js时间…

windows 下docker安装宝塔镜像 宝塔docker获取镜像

1. docker 安装宝塔 打开链接&#xff1a;https://www.docker.com/get-started&#xff0c;找对应的版本下载docker&#xff0c;安装docker打开百度云盘&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1DGIjpKkNDAmy4roaKGLA_w 提取码&#xff1a;u8bi 2. 设置镜像 点…

LeetCode刷题笔记【31】:动态规划专题-3(整数拆分、不同的二叉搜索树)

文章目录 前置知识343. 整数拆分题目描述解题思路代码进一步优化 96.不同的二叉搜索树题目描述解题思路代码优化改进 总结 前置知识 参考前文 参考文章&#xff1a; LeetCode刷题笔记【29】&#xff1a;动态规划专题-1&#xff08;斐波那契数、爬楼梯、使用最小花费爬楼梯&…

TikTok运营做不起来?IP是关键

作为跨境电商新蓝海&#xff0c;TikTok不断的加快自己推进电商业务的步伐&#xff0c;也吸引了越来越多的跨境商家入驻。但是很多人信心满满注册入驻后&#xff0c;却遇到了0播放&#xff0c;流量少&#xff0c;转化低的问题&#xff0c;Tiktok运营不起来&#xff0c;那你要注意…

手机上pdf转word的方法,快来掌握一下吧

在日常工作和学习中&#xff0c;我们常常需要将PDF文件转为Word文档以方便编辑和修改。本文将介绍手机上PDF转Word的方法及需要注意的事项。 PDF转Word的方法 目前市面上有很多PDF转Word的应用&#xff0c;通常都是在电脑上操作的&#xff0c;但是很多时候我们不在电脑前如果需…

形态图像处理

形态图像处理 预备知识 反射、平移结构元 腐蚀和膨胀 腐蚀 将 B 平移&#xff0c;当其原点位于 z 时&#xff0c;其包含在 A 中&#xff0c;则 z 为一个有效的位置&#xff0c;所有有效的z构成了腐蚀之后的结果腐蚀缩小或细化了二值图像中的物体可以将腐蚀看作形态学滤波操…

化繁为简,国内知名期货交易所依托 MogDB 数据库促信创改造项目提速

近年来&#xff0c;国家持续加大力度推动新基建建设&#xff0c;信创产业作为新基建的重要组成部分&#xff0c;在2020年得到全面推广。在这三年间里&#xff0c;我国信创产业逐步进入黄金发展期&#xff0c;国产基础软硬件从“不可用”到“可用”并逐渐向“好用”演进。因此&a…

Carla学习笔记(二)服务器跑carla,本地运行carla-ros-bridge并用rviz显示

一、服务器跑carla 详见Carla学习笔记&#xff08;一&#xff09;服务器跑carla本地显示窗口_Zero_979的博客-CSDN博客 只需要启动服务器端就行&#xff1a; ./CarlaUE4.sh -carla-rpc-port2000 -RenderOffScreen -graphicsadaper1 二、本地下载 carla-ros-bridge 官方库&…

手麻系统全套源码 术前、术中、术后全过程管理

手术麻醉临床信息系统源码 手麻系统全套源码 手术麻醉临床信息系统功能符合三级甲等医院评审要求&#xff0c;实现与医院现有信息系统如HIS、LIS、PACS、EMR等系统全面对接&#xff0c;全面覆盖从患者入院&#xff0c;经过术前、术中、术后&#xff0c;直至出院的全过程。通过…

C编程预备计算机专业知识

目录 cpu 内存条 硬盘 显卡 主板 显示器 之间的关系 什么是数据类型 基本数据类型 复合数据类型 什么是变量 变量为什么必须初始化&#xff0c;初始化就是赋值的意思 如何定义变量 什么是进制 常量在C语言中如何表示 常量以什么样的二进制代码存储在计算机中 什么是字节…

Ubuntu安装NVIDIA显卡驱动

目录 0. 引言1. 方法1 - 使用系统自带渠道安装2. 方法2 - 手动安装2.1. 卸载原有显卡驱动2.2. 安装显卡驱动2.3. 补救措施 0. 引言 \qquad 第一次入坑的建议看一下这部分。如果说要问我什么时候应该给Ubuntu装显卡驱动&#xff0c;我建议新系统用户第一件事就是安装显卡驱动&am…

C语言练习题解析:挑战与突破,开启编程新篇章!(3)

&#x1f493;博客主页&#xff1a;江池俊的博客⏩收录专栏&#xff1a;C语言刷题专栏&#x1f449;专栏推荐&#xff1a;✅C语言初阶之路 ✅C语言进阶之路&#x1f4bb;代码仓库&#xff1a;江池俊的代码仓库&#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐ 文…

如何加密Python程序

我们开发了一个项目&#xff0c;历尽艰辛&#xff0c;想发布出去&#xff0c;又怕别人窃取自己的劳动成果。 有效的方法一是可以上传github&#xff0c;分享源代码&#xff0c;其它想使用的朋友可以通过fork来进一步改进它。 对了&#xff0c;最近刚发现一个小技巧&#xff0…

如何使用 MSYS2 编译最新版的 coreutils 源码(目前最新版本为 coreutils-9.4)

文章目录 一、coreutils 源码下载二、MSYS2 安装编译工具1. pacman -Suy 更新软件仓库2. pacman -S msys/gcc 安装gcc3. pacman -S msys/make 安装make工具4. 解压缩 coreutils 压缩包5. 执行 ./configure 命令6. 执行 make 进行编译&#xff08;cygwin-3.4.8版本的一个bug导致…

1.1 空间直角坐标系

1.空间直角坐标系的建立 三维空间中几何 空间图形形式 ----- 点 线 面 体 ↑ ↓ \uparrow\downarrow ↑↓ &#xff08;空间直角坐标系作为桥梁帮助我们理解&#xff09; 代数理论表达 — 坐标&#xff0c;方程&#xff08;组&#xff09; 2. 空间直角坐标系的定义 定义: 过…