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

150. 逆波兰表达式求值

时间:2024-08-20 23:37:44浏览次数:11  
标签:150 map sum two tokens push 求值 stack 表达式

题目描述

给你一个字符串数组 tokens ,表示一个根据逆波兰式表示法 表示的算术表达式。

请你计算该表达式。返回一个表示表达式值的整数。

解题思路

我们依次遍历数据,如果遇到数字我们就直接入栈,如果遇到运算符,我们就取出栈顶的元素两个,然后进行运算,这里要注意-和/这两个运算符,取栈顶元素的位置要是运算时候的顺序是相反的,最后的话我们只需要返回栈里唯一的元素就行了,就是我们最终的结果

代码


public int evalRPN(String[] tokens) {
        Map<String, Integer> map = new HashMap<>();
        map.put("+", 1);
        map.put("-", 1);
        map.put("*", 1);
        map.put("/", 1);
        Stack<Integer> stack = new Stack<>();
        for (int i = 0; i < tokens.length; i++) {
            if (stack.isEmpty()) {
                stack.push(Integer.parseInt(tokens[i]));
            } else if (map.containsKey(tokens[i])) {
                int one = stack.pop();
                int two = stack.pop();
                int sum;
                switch (tokens[i]) {
                    case "+":
                        sum = one + two;
                        stack.push(sum);
                        break;
                    case "-":
                        sum = two - one;
                        stack.push(sum);
                        break;
                    case "*":
                        sum = one * two;
                        stack.push(sum);
                        break;
                    case "/":
                        sum = two / one;
                        stack.push(sum);
                        break;
                }
            } else {
                stack.push(Integer.parseInt(tokens[i]));
            }
        }

        return stack.pop();
    }

标签:150,map,sum,two,tokens,push,求值,stack,表达式
From: https://www.cnblogs.com/dfj-blog/p/18370575

相关文章

  • leetcode面试经典150题- 15. 三数之和
    https://leetcode.cn/problems/3sum/description/?envType=study-plan-v2&envId=top-interview-150 packageleetcode150import("sort""testing")funcTestThreeSum(t*testing.T){nums:=[]int{0,2,2,3,0,1,2,3,-......
  • 正则表达式入门:Python ‘ re ‘ 模块详解
    正则表达式(RegularExpression,简称re)是一种强大而灵活的工具,广泛用于字符串匹配、替换和分割等操作,尤其在处理网页爬虫数据时非常有用。Python提供了"re" 模块来支持正则表达式的使用,本文将结合常见的用法和示例,带你快速入门。正则表达式的常用方法匹配字符串1.'sea......
  • 【第66课】Java安全&SPEL表达式&SSTI模版注入&XXE&JDBC&MyBatis注入
    免责声明本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。文中所涉......
  • leetcode面试经典150题-125. 验证回文串
    https://leetcode.cn/problems/valid-palindrome/description/?envType=study-plan-v2&envId=top-interview-150 packageleetcode150import("strings""testing")funcTestIsPalindrome(t*testing.T){s:="0P"......
  • 正则表达式
    正则表达式Java正则表达式是Java语言中用于匹配字符串中字符组合的模式。Java提供了java.util.regex包,其中包含了用于正则表达式操作的主要类:Pattern:表示正则表达式的编译表示形式。Pattern类是不可变的,所以可以安全地共享。Matcher:是正则表达式引擎的结果,用于与输入字......
  • JavaScript-正则表达式入门指南-全-
    JavaScript正则表达式入门指南(全)原文:IntroducingRegularExpressions协议:CCBY-NC-SA4.0一、正则表达式简介为了开始介绍正则表达式,我将从一个例子开始。这是一个你已经经历了几百次的问题。当您在线输入客户数据时,许多web表单会要求您提供电子邮件地址。为了避免输入......
  • 【C总集篇】第四章 运算符,表达式和语句
    文章目录第四章运算符,表达式和语句运算符赋值运算符:=加法运算符:+减法运算符:-符号运算符:-和+乘法运算符:*除法运算符:/size_t类型求模运算符:%递增运算符:++递减运算符:--移位运算符左移操作符:<<右移操作符:>>位操作符按位与:&基础概念**清零**清除高位/低位保留指定......
  • 正则表达式
    一、正则特殊符号:1、;作用:命令的分隔符,前面的命令失败或者正确都会继续执行案例1:命令的拼接[root@web01~]#ll;mkdirweb;cdweb;pwdtotal4-rw-r--r--1rootroot1000Nov2322:57test.zip/root/web案例2:命令执行错误不影响后续命令执行[root@web01~]#lll;mkdir......
  • 力扣面试经典算法150题:删除有序数组中的重复项 II
    删除有序数组中的重复项II今天的题目是力扣面试经典150题中的数组的中等难度题:删除有序数组中的重复项II题目链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/description/?envType=study-plan-v2&envId=top-interview-150题目描述给定一......
  • 力扣面试经典算法150题:最后一个单词的长度
    最后一个单词的长度今天的题目是力扣面试经典150题中的数组的简单题:最后一个单词的长度题目链接:https://leetcode.cn/problems/length-of-last-word/description/?envType=study-plan-v2&envId=top-interview-150题目描述给定一个仅包含大小写字母和空格’’的字符......