牛客网:AB4 逆波兰表达式求值

【OJ - stack】中缀表达式转后缀表达式 & 后缀(逆波兰)表达式的计算 OJ - 中缀表达式转后缀表达式 题目难度:简单 OJ链接:中缀表达式转后缀表达式_牛客网 (nowcoder.com) 将中缀表达式转为后缀表达式(逆波兰表达式),输入 a+b*c/d-a+f/b 输出 abc*d/+a-fb/+ 要求:语言不限;输入输出均为单个字符串;操作数用单个小写字母表示,操作符只需支持 ±*/,按照四则运算顺序确定优先级,不包含括号。 示例: 输入:a+b*c/d-a+f/b 输出:abc*d/+a-fb/+ // 操作符跟在它要运算的操作数的后面,按优先级排列 解题思路 阅读详情

做这题之前得需要明白什么是波兰表达式,和逆波兰表达式。

其实就是把我们眼睛看到的字符串转换成电脑可以识别计算的字符串,这个是在数据结构一书中有案例的,不懂的小伙伴可以去了解一下。

解题思路如下:

  1.  创建一个栈用来存放这些数据。
  2. 便利数组的数据。
  3. 如果是数字,直接入栈。
  4. 如果是字符,取出栈内的数据,然后根据字符进行操作。
    
    import java.util.Deque;
    import java.util.LinkedList;
    
    /**
     * @author xienl
     * @description 逆波兰表达式求值
     * @date 2022/5/24
     */
    
    public class Solution {
    
        public static void main(String[] args) {
            Solution solution = new Solution();
            // String[] tokens = {"2","1","+","4","*"};
            String[] tokens = {"2","0","+"};
            System.out.println(solution.evalRPN(tokens));
    
        }
    
        /**
         * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
         *
         *
         * @param tokens string字符串一维数组
         * @return int整型
         */
        public int evalRPN (String[] tokens) {
            // 存放数字结果的栈
            Deque<Integer> stack = new LinkedList<>();
            for (String str : tokens) {
                if ("+".equals(str) || "-".equals(str) || "*".equals(str) || "/".equals(str)){
                    calculation(stack, str);
                } else {
                  stack.push(Integer.parseInt(str));
                }
            }
            return stack.peek();
        }
    
        /**
         * 计算器
         * @param stack 存放数字的栈
         * @param str   存放计算字符
         */
        private void calculation(Deque<Integer> stack, String str){
            Integer num1 = stack.pop();
            Integer num2 = stack.pop();
    
            switch (str){
                case "+":
                    stack.push(num1 + num2);
                    break;
                case "-":
                    stack.push(num2 - num1);
                    break;
                case "*":
                    stack.push(num1 * num2);
                    break;
                case "/":
                    stack.push(num2 / num1);
                    break;
                default:
            }
        }
    
    
    
    }
    

VSCode终端打不开?3分钟搞定Windows下Terminal配置(附最新JSON设置方法) 本文针对Windows系统下VSCode终端无法启动的常见问题,提供了详细的诊断与解决方案。核心在于更新已弃用的旧配置,采用最新的JSON设置方法,通过定义`terminal.integrated.profiles.windows`和指定`terminal.integrated.defaultProfile.windows`,快速修复并优化终端配置,实现三分钟内恢复正常使用。 阅读详情

相关推荐

基于ESP32的气象雷达站设计与实现

物联网技术通过嵌入式设备实现环境数据的实时采集与可视化,其中ESP32凭借其双核处理器和WiFi/蓝牙功能成为热门选择。本项目利用ESP32结合LVGL图形库,构建了一个低成本气象监测系统,通过OpenWeatherMap API获取全球气象数据并在7英寸触摸屏上动态展示。系统采用三级优化策略处理高分辨率雷达图,包括服务端预处理、硬件加速解码和显示增强,有效解决了内存占用和帧率问题。在物联网设备开发中,类似方案可应用于智能家居、农业监测等场景,特别是需要实时数据可视化的领域。通过SPIFFS存储和zlib压

weixin_42524864的博客 422

Python栈:牛客 AB4 逆波兰表达式求值

Python栈:逆波兰表达式求值

Your_Majesty!的博客 364

海思MIPI屏调试实战:从参数计算到点亮屏幕的完整指南

本文提供了一份海思平台MIPI屏幕调试的完整实战指南。文章以Hi3516DV300调试800x1280分辨率屏幕为例,详细讲解了从参数计算、配置文件修改到最终点亮屏幕的全流程,并分享了常见问题排查与进阶优化技巧,旨在帮助嵌入式开发者高效解决MIPI屏调试难题。

weixin_29190573的博客 736

【每日算法】AB4 逆波兰表达式求值

牛客AB4 逆波兰表达式求值

weixin_50497501的博客 352

【ISP图像处理】Demosaic去马赛克技术演进与边缘优化策略

本文深入解析了ISP图像处理中的Demosaic(去马赛克)技术。从Bayer阵列原理出发,梳理了从双线性插值、Hamilton-Adams边缘导向算法到利用通道相关性与自相似性的技术演进历程,并重点探讨了针对边缘与纹理伪影的优化策略,为工程实践中的算法选型与硬件协同设计提供了专业指导。

weixin_29091445的博客 388

淘宝电商产品价格官方防爬取采集设计机制,如何破?|淘宝电商API数据采集看完你也会!

然而,随着电子商务的蓬勃发展,涌现出大量的第三方工具和应用,试图通过采集淘宝电商产品价格等信息来进行数据分析和竞争优势的获取。为了维护市场秩序和保护商家权益,淘宝采取了一系列的防爬取设计机制,以阻止非授权的数据采集行为。为了确保数据的准确性和及时性,淘宝采取了多层次的防爬取机制,以限制未经授权的数据采集。其它的情况,比如淘宝首页、淘宝关键词商品搜索结果页面、商品详情页面,都是正常展示,未实现加密;也可以使用【tesseract ocr识别】指令,这个是免费无限使用的;【淘宝商品搜索结果页面-本地截图】

TinagirlAPI的博客 1388

『牛客|每日一题』逆波兰表达式

给定一个逆波兰表达式,求表达式的值。 计算逆波兰表达式:遇到数字就压栈,遇到运算符就弹出栈顶两个数进行计算,然后把计算结果压入栈中,直到栈中只剩下最后一个数,就是整个逆波兰表达式的计算结果。 step 1:引入辅助栈stk,遍历字符串,每次遇到数字就入栈,所以栈可以定义为Integer类型 step 2:当遇到"+","-","*","/"字符串的时候,则弹出栈顶两个数,进行相应的运算(先弹出来的是被操作数,后弹出来的是操作数;如减法时,是先弹出来的是被减数,后弹出来的是减数) step 3:将计算结果(

一个专注于客户端开发的技术er,不定期更新Android,Flutter,HormonyOS等方向的使用心得和感悟 672

SIwave串扰分析保姆级教程:从Allegro文件导入到结果解读,手把手教你排查PCB信号问题

本文提供SIwave串扰分析的详细教程,从Allegro文件导入到结果解读,手把手教你排查PCB信号问题。涵盖环境准备、参数配置、串扰扫描技巧及实战案例,帮助工程师精准定位和解决高速PCB设计中的串扰问题,提升信号完整性分析能力。

weixin_42620913的博客 257

leetcode逆波兰表达式C++

头文件 #include <iostream> #include <vector> using namespace std; class Solution { public: /*逆波兰表达式的解释器一般是基于堆栈的。 解释过程一般是:操作数入栈;遇到操作符时,操作数出栈,求值,将结果入栈; 当一遍后,栈顶就是表达式的值。*/ int evalRPN(vector<string> &tokens) { stack&

weixin_45485072的博客 464

【QT开发教程】使用Qt进行蓝牙低功耗(BLE)编程

蓝牙低功耗(BLE,Bluetooth Low Energy)技术广泛应用于现代设备中,例如智能手表、健身追踪器和物联网设备。Qt提供了一套完整的Bluetooth模块,使开发者可以轻松地在应用程序中实现BLE通信功能。本文将介绍如何在Qt中进行BLE编程,包括基本概念、使用方法以及一些实际的示例。

科技改变人类,技术成就未来 2869

NVIDIA Jetson之远程控制软件NoMachine安装使用

参考:https://www.bilibili.com/video/BV1cg4y1i776?t=12 0 背景

ZONGXP的博客 1万+

LeetCode刷题笔记-day12-逆波兰表达式求值

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

Mark_able 183

自动化上位机开发C#100例:如何用面向对象的方式封装雷赛运动控制卡EtherCAT总线卡(C#代码)

自动化上位机开发C#100例:雷赛运动控制卡EtherCAT总线卡C#封装类。

十多年IT经验,专注机器视觉,智能制造半导体行业 5031

【算法入门】 有效括号序列|逆波兰表达式求值|点击消除

本专栏收录的均为牛客网的算法题目,内含链表、双指针、递归、动态规划、基本数据结构等算法思想的具体运用。牛客网不仅有大量的经典算法题目,也有大厂的面试真题,面试、找工作完全可以来这里找机会。此外,网站内的编码主题多样化,调试功能可运用性强,可谓是非常注重用户体验。这么好的免费刷题网站还不快入手吗,快去注册开启算法百炼成神之路吧!

叶落秋白的博客 973

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【Java】想进大厂?你应该知道的算法经典习题(栈)

你应该了解的经典算法题目,刷到就是赚到!

weixin_49405762的博客 2648

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

逆波兰表达式解法:牛客网 HJ70 矩阵乘法计算量估算

逆波兰表达式解法:牛客网 HJ70 矩阵乘法计算量估算

Fourier_xyz的博客 305

【算法入门】 有效括号序列 逆波兰表达式求值 点击消除_辅助栈包含头文件

本专栏收录的均为牛客网的算法题目,内含链表、双指针、递归、动态规划、基本数据结构等算法思想的具体运用。牛客网不仅有大量的经典算法题目,也有大厂的面试真题,面试、找工作完全可以来这里找机会。此外,网站内的编码主题多样化,调试功能可运用性强,可谓是非常注重用户体验。这么好的免费刷题网站还不快入手吗,快去注册开启算法百炼成神之路吧!

2401_84185626的博客 979

猿创征文 |【算法入门必刷】数据结构-栈(四)

【算法入门必刷】数据结构-栈篇(四) 📦个人主页:一二三o-0-O的博客 🏆技术方向:C/C++客户端资深工程师(直播+音视频剪辑) 👨‍💻作者简介:数据结构算法与音视频领域创作者 📒 系列专栏:牛客网面试必刷 📣专栏目标:帮助伙伴们通过系统训练,掌握数据结构与算法,收获心仪Offer 📝推荐一个找工作神器:牛客刷题网 【面试经验|实习招聘内推,求职就业一战解决】 🧡如果对您有帮助的话,欢迎点赞👍收藏📂,关注不迷路...

MichaelKongChina的博客 529

牛客网 leetcode在线编程训练 evaluate-reverse-polish-notation

题目:链接:https://www.nowcoder.com/questionTerminal/22f9d7dd89374b6c8289e44237c70447?orderByHotValue=1&amp;mutiTagIds=581&amp;page=1&amp;onlyReference=false来源:牛客网Evaluate the value of an arithmetic expres...

xjy95的博客 510

记一次面试经历

今早七点半的巴士从中山赶到广州面试PHP开发助理,以前面的都是十来人、几十人的小公司,不少还是培训公司,坑的一逼!这次的公司不错,比较正规,好歹上百人了,只是笔试题做得一般,题目有的虽有学过,但忘了,好吧!这就是没准备充分的缘故!下面罗列下我还记得的题目(有些漏了就没办法了),之后hr面试聊了下,虽然技术问的不多,感觉自己回答的不好,言语比较少,不善言谈,硬伤啊!: 四道选择题 1、表达式转换

Inite的博客 570

牛客网笔试输入输出的一堆坑。。(Python)

牛客网笔试的时候Python的输入输出是真的很坑,有时候线下自测案例是正常的,线上却怎么都调不过去,这里简单记录一下。 一、常见输入输出的写法 1、input #直接使用input(),读取回来的是字符串,比如输入为“abds”,n就为“abds” n = input() ▲需要注意的是input()是一行一行读取的,也就是每次只能读取一行,需要读取第二行的话要再调用一次input()。 当然很多时候我们输入是一个列表,我们可以用以下的方法将其分割为列表。 n_list = list(map(int, i

藏晖的博客 5054

后缀表达式/逆波兰表达式

来自:牛客网参考解析 后缀表达式也叫逆波兰表达式,其求值过程可以用到栈来辅助存储: 遇到数字先进栈,遇到符号弹出两个数字,运算后再入栈,直到结束全部弹出~ 转载于:https://www.cnblogs.com/Toya/p/9628089.html...

weixin_30402343的博客 161

150. 逆波兰表达式求值中出现的错误(.equals引发的血案)

题目要求的是既可以把中途运算的结果转化为表达式也可以转化为整数结果,我是直接转化为整数结果,思路很简单,循环遍历字符串,遇到数字字符直接压入栈,如遇到运算符,则把栈顶的两个数字弹出,第二个测试用例是:tokens = ["10","6","9","3","+","-11","*","/","*","17","+","5","+"]好家伙这报错的不是tokens的最后一个字符串,检查一下代码,好家伙判断字符串是否相等居然用了==,真像给自己一个大臂兜,改成.equals。...

princekin_even的博客 332

AB4 逆波兰表达式求值

AB4 逆波兰表达式求值 关键思路:栈,遇到数字压入栈中,遇到运算符,就弹出栈顶两个元素计算,计算后再压入栈中 先判断的是否是运算符,遇到好多坑点,注意一下;还有就是,这里有负数,所以我们用stoi这个函数来转换成数字,减少一部分麻烦; class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param tokens string字符串vector

小郑在路上 322

150. 逆波兰表达式求值

根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 说明: 1.整数除法只保留整数部分。 2.给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。 示例 1: 示例 2: 示例 3: 逆波兰表达式: 逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。 1.平常使用的算式则是一种中缀表达式,如 ( 1 + 2 ) * ( 3 + 4 ) 。 2.该算式的逆波兰表达式写法为 ( ( 1

jiangdongxiaobawang的博客 730

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 290

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 349
上一篇: 力扣675. 为高尔夫比赛砍树
下一篇: 力扣 965. 单值二叉树
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值