首页 > 其他分享 >LeetCode150.逆波兰表达式求值

LeetCode150.逆波兰表达式求值

时间:2023-10-31 20:03:33浏览次数:37  
标签:LeetCode150 firstInt pop push secondInt str 求值 stack 表达式

题目描述

给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。
请你计算该表达式。返回一个表示表达式值的整数。

示例

image

提交的代码

import java.util.Deque;
import java.util.LinkedList;
class Solution {
    public int evalRPN(String[] tokens) {
        Deque<Integer> stack=new LinkedList<>();
        Integer firstInt=0;
        Integer secondInt=0;
        for(String str:tokens){
            if("+".equals(str)){
                stack.push(stack.pop()+stack.pop());
            }else if("-".equals(str)){
                secondInt=stack.pop();
                firstInt=stack.pop();
                stack.push(firstInt-secondInt);
            }else if("*".equals(str)){
                stack.push(stack.pop()*stack.pop());
            }else if("/".equals(str)){
                secondInt=stack.pop();
                firstInt=stack.pop();
                stack.push(firstInt/secondInt);
            }else{
                stack.push(Integer.valueOf(str));
            }
        }
        return stack.peek();
    }
}

思想

其实没什么思想,数据结构里面的例题,遇到数字就入栈,遇到运算符就将栈中的两个数字出栈并进行相应的运算,运算的结果重新返回栈中,但是在运算-和/运算的时候,要注意栈的特性,第一个出栈的数字是运算的后位数。

标签:LeetCode150,firstInt,pop,push,secondInt,str,求值,stack,表达式
From: https://www.cnblogs.com/whitePuPigeon/p/17801148.html

相关文章

  • lamdba表达式
    lamdba表达式是为了避免匿名内部类定义过多为什么要使用lambda表达式避免匿名内部类定义过多可以让你的代码看起来很简洁去掉了一堆没有意义的代码,只留下核心的逻辑。packagecom.xh.Thread;/***lamdba表达式事实上是内部接口**/publicclassLamdbaTest{ //3,定义一......
  • Kotlin: 高阶函数与Lambda表达式 (转)
    Kotlin:高阶函数与Lambda表达式(转)本文转自:https://rengwuxian.com/kotlin-lambda/看到一篇写得不错的关于kotlin高阶函数与Lambda的博文,特转载之。1.Kotlin的高阶函数Kotlin很方便,但有时候也让人头疼,而且越方便的地方越让人头疼,比如Lambda表达式。很多人因为Lamb......
  • 字符串表达式计算(a+b/(a-b))的思路与实践
    前言为满足业务需要,需要为项目中自定义模板添加一个计算字段的组件,通过设置字符串表达式,使用时在改变表达式其中一个字段的数据时,自动计算另外一个字段的值。本篇为上篇,介绍原理,简单实现一个工具,输入字符串表达式,解析其中的参数,输入参数计算结果。下篇将基于此封装实现对Mongo......
  • 逆波兰表达式
    classSolution{publicintevalRPN(String[]tokens){Stackst=newStack();booleanflag=true;intval=0;for(inti=0;i<tokens.length;i++){if("+".equals(tokens[i])){......
  • Java21的新表达式类型-模板表达式
    大家好,我是老七,点个关注吧,将持续更新更多精彩内容!在Java编程语言里,模板表达式这个新玩意儿给大家带来了全新的表达式类型。这篇文章会给大家详细讲解模板表达式是什么,如何用它,以及通过具体的代码示例来展示它的优点。什么是模板表达式模板表达式是Java21里新出的一个表达式类型。它......
  • Visual Studio 2022 正则表达式
    VisualStudio2022支持使用正则表达式进行搜索和替换操作。在搜索框中,可以点击“正则表达式”按钮来启用正则表达式模式。下面是一些常用的正则表达式示例:匹配数字:\d匹配字母:[a-zA-Z]匹配空格:\s匹配任意字符:.匹配一个或多个字符:+匹配零个或多个字符:*匹配起始位置:^匹配......
  • 常用正则表达式
    一、正则表达式语法1.元字符字符匹配符选择匹配符限定符定位符分组组合和反向引用符元字符(Metacjaracter)-转义号\\\\符号 说明:在我们使用正则表达式去检索某些特殊字符的时候,需要用到转义符号,否则检索不到结果,甚至会报错。特殊:在Java的正则表达式中,两个\\代表其他......
  • 正则表达式
     关于正式表达式参考资料:http://events.jianshu.io/p/dc3dfb98dfbb   查找匹配类的规则标识符解释示例^匹配行首 $匹配行末 \<匹配词首 \>匹配词末 ^$匹配空行 \B匹配非边界aajavabb; 用法可以是:\Bjava,java\B,\Bjava\B......
  • 拉姆达表达式
    拉姆达表达式(LambdaExpression)是一种匿名函数,它允许开发者在代码中快速定义简单的函数。Lambda表达式通常用于简化代码逻辑,特别是在处理集合和流时。Lambda表达式的语法如下:(parameters)->expression其中,`parameters`是参数列表,可以有零个或多个参数;`->`是箭头符号,用于......
  • JAVA中char类型加减乘除运算表达式返回类型
    我们都知道java中,如果char类型和int类型做加减法,那么char类型会被精度提升至int类型然后参与运算,返回的也是int类型的数据。那么如果表达式中参与运算的均为char类型,那么表达式返回的类型是什么呢?'A'-'a'经过简单测试,是int类型。charc='w';sb.append('A'+c-'a');......