逆波兰表达式求值——栈与队列

news/2024/11/18 22:47:23/文章来源:https://www.cnblogs.com/peishouhao/p/18553902

首先是第一次的代码

class Solution
{
public:int evalRPN(vector<string> &tokens){stack<long long> str;for (int i = 0; i < tokens.size(); i++){if (tokens[i] != "+" && tokens[i] != "-" && tokens[i] != "*" && tokens[i] != "/"){// 用于将字符串转换为 long long 类型的整数。str.push(stoll(tokens[i]));}else{// 没有办法直接把表达符放中间就一个一个iflong long num1 = str.top();str.pop();long long num2 = str.top();str.pop();if (tokens[i] == "+")str.push(num1 + num2);if (tokens[i] == "*")str.push(num1 * num2);if (tokens[i] == "-")str.push(num2 - num1);if (tokens[i] == "/")str.push(num2 / num1);}}int sum = str.top();return sum;}
};

然后是第二次的代码

问题一在于 我该如何再不确定运算符的情况下进行计算——————就是一个一个if

问题二在于注意string和char的区别一个是双引号一个是单引号

问题三在于类型的对应问题 “no matching member function for call to 'push'” 这就是说明把string的类型传入了int 中需要进行类型的转换,又考虑到只有数字进去了所以只对数字进行转换即可。

但是stoll 是 C++ 中用于将字符串转换为 long long 类型整数的函数,所以这就意味着栈也必须是long long类型的

第二版代码逻辑正确但是有两个很细节的问题

class Solution {
public:int evalRPN(vector<string>& tokens) {stack<long long> s1; // 存放输入int size = tokens.size();for (int i = 0; i < size; i++) {if (tokens[i] != "+" && tokens[i] != "-" && tokens[i] != "*" &&tokens[i] != "/") {s1.push(stoll(tokens[i]));} else {if (tokens[i] == "+") {int a = s1.top();s1.pop();int b = s1.top();s1.pop();int c = a + b; // 我该如何再不确定运算符的情况下进行计算s1.push(c);continue;} else if (tokens[i] == "-") {int a = s1.top();s1.pop();int b = s1.top();s1.pop();int c = a - b;s1.push(c);continue;} else if (tokens[i] == "*") {int a = s1.top();s1.pop();int b = s1.top();s1.pop();int c = a * b;s1.push(c);continue;} else if (tokens[i] == "/") {int a = s1.top();s1.pop();int b = s1.top();s1.pop();int c = a / b;s1.push(c);continue;}}}int result = s1.top();return result;}
};

细节一:外面都是long long类型 那么里面也应该是一样的,所以都需要改成了long long‘

细节二:就是运算顺序的问题,先出来的那个应该是在运算符的右边、

然后经过实验也不是说一定要转成long long 类型我们直接使用stoi把他们都转成int类型的也可以。

存储范围:

  • int:通常是 4 字节(32 位),它的取值范围是:
    • 有符号(signed)int-2^312^31 - 1,即大约 -21亿21亿
    • 无符号(unsigned)int02^32 - 1,即大约 042亿
  • long long:通常是 8 字节(64 位),它的取值范围是:
    • 有符号(signed)long long-2^632^63 - 1,即大约 -9.2 x 10^189.2 x 10^18
    • 无符号(unsigned)long long02^64 - 1,即大约 018.4 x 10^18

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

厉害了,8.7w人打满分!如果我找 BUG 能像他一样厉害就好了!

你好呀,我是歪歪。 最近在 B 站上看到一个让我觉得“非常哇塞”视频的:https://www.bilibili.com/video/BV1y4421U72G/视频的播放量有接近 400w,在视频快结尾的地方,UP 主设置了一个打分的互动:8.7 万人参与,平均 10 分。这参与度和平均分,歪师傅作为在 B 站混迹多年的用…

JAVA反序列化学习-CommonsCollections2(基于ysoserial)

环境准备 JDK1.8(8u421)这里ysoserial,我以本地的JDK8版本为准、commons-collections4(4.0 以ysoserial给的版本为准)、javassist(3.12.1.GA) cc4.0、ClassPool <dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4&…

先天软工圣体队———冲刺日记(第四天)

1. 每位团队成员的分工与进度成员 完成的任务 完成的任务时长 剩余时间何愉心、邱雨涵 对vlog做最终的修改,美化。为实验课做准备 2小时 6小时陈思雨,郑奇键 搜集筛选资料,填充资料库 1小时 11小时陈尚冰 对web页面的边框,按键美化 3小时 10小时柯鸿毅 AI接口调用测试,修改…

电子元器件外贸购买

前言 最近忙着采购外国一款品牌的连接器(说人话就是端子),有很多专业术语需要理解。PKG是什么意思? 指产品的包装方式或包装材料, PKG是packaging的缩写. 请结合具体的环境确认是指包装方式还是包装材料.有时, 客户会说quotation package, 这里指的是将所有报价资料打包,里…

看过这个,你可能更了解指针4

如图,我们先看以下问题在稍微思考过后,先把你的答案记下来吧。 接下来我们分析 ****1中arr被单独放入sizeof中,表示整个数组,则计算整个数组的大小, 且sizeof计算的大小包含\0,则在sizeof看来数组arr有7个元素, 类型为char,7乘1=7 ****2中arr没有单独放入sizeof中,也没…

20222312 2024-2025-1《网络与系统攻防技术》实验五实验报告

一、实验内容 1.1 知识回顾 1.2实验内容 从besti.edu.cn中选择一个DNS域名进行查询,获取信息 尝试获取BBS、论坛、QQ、MSN中某一好友的IP地址,并查询获取该好友所在的具体地理位置。 使用nmap开源软件对靶机环境进行扫描,回答以下问题并给出操作命令。 使用Nessus开源软件对…

【模型部署】vLLM 部署 Qwen2-VL 踩坑记 03 - 多图支持和输入格式问题

【模型部署】vLLM 部署 Qwen2-VL 踩坑记 03 - 多图支持和输入格式问题 NLP Gi【模型部署】vLLM 部署 Qwen2-VL 踩坑记 03 - 多图支持和输入格式问题 NLP Github 项目:NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和…

centos7创建逻辑卷

1.fdisk /dev/sdb 创建分区 2. p:查看分区 n:创建新分区 p (1-4):1输入起始号码 2048开始扇区 +1600M结束扇区 w保存 3. l 查看分区类型 8e 设置成lvm格式。 4.创建物理卷 pvcreate /dev/sdb1 查看物理卷 pvdisplay /dev/sdb15. 创建卷组 vgcreate npgroup /dev/sdb1 (npg…

Chunkr: 在线PDF文档解析与OCR工具

介绍 1 版面分割模型 这部分属于另一个项目(pdf-document-layout-analysis)的内容,可以移步查看具体模型的介绍和训练过程。 1.1 机器学习模型 基于LIGHTGBM算法,并且只需要使用CPU资源,因此对硬件要求不高,速度快,但是只能处理文字类型的PDF。 1.2 VGT模型 能处理图片P…

关于一些哈希

关于一些简单但我不会的哈希随缘更新,但考虑到马上要退役,毕业前应该没机会力。 求字符串的最长公共前缀 标准 空间复杂度:\((\sum_i |s_i|)\),但根据具体场景通常可以缩小至\(O(n)\)。 时间复杂度:\(O(\sum_i |s_i|)\)预处理,\(O(\log min(|s_i|,|s_j|))\)求两字符串的最…

NFLS 图论题单笔记(完结)

John的农场是一张 N*N 的方格图,贝茜住在左上角(1,1),John住在右下角(N,N)。 现在贝茜要去拜访John,每次都只能往四周与之相邻的方格走,并且每走一步消耗时间 T。 同时贝茜每走三步就要停下来在当前方格吃草,在每个方格吃草的用时是固定的,为 H[i][j]。 John想知道贝…

基于Java+SSM+JSP+MYSQL实现的宠物领养收养管理系统功能设计与实现七

基于SSM整合maven开发的一款宠物收养领养管理系统附带源码指导运行视频,该项目前端模板是借鉴别人的,自己写的后台代码,该系统分为前台和后台,前台功能有:登录注册、领养中心、活动中心等。后台管理员功能有:用户管理、宠物管理、活动管理、领养管理、志愿者管理等。该项…