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

LeetCode. 逆波兰表达式求值

时间:2024-04-08 22:01:56浏览次数:20  
标签:10 num2 17 stack tokens 求值 LeetCode 表达式

根据 逆波兰表示法,求该后缀表达式的计算结果。

有效的算符包括 +-*/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。

说明:

  • 整数除法只保留整数部分。
  • 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。

示例 1:

输入:tokens = ["2","1","+","3","*"]
输出:9
解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9

示例 2:

输入:tokens = ["4","13","5","/","+"]
输出:6
解释:该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6

示例 3:

输入:tokens = ["10","6","9","3","+","-11","*","/","*","17","+","5","+"]
输出:22
解释:
该算式转化为常见的中缀算术表达式为:
  ((10 * (6 / ((9 + 3) * -11))) + 17) + 5
= ((10 * (6 / (12 * -11))) + 17) + 5
= ((10 * (6 / -132)) + 17) + 5
= ((10 * 0) + 17) + 5
= (0 + 17) + 5
= 17 + 5
= 22

class Solution {

    public int evalRPN(String[] tokens) {

        Stack<Integer> stack = new Stack<>();

        for(String x:tokens){

            if(!isOperations(x)){

                stack.push(Integer.parseInt(x));

            }else{

                int num2= stack.pop();

                int num1=stack.pop();

                switch(x){

                    case "+":

                        stack.push(num1+num2);

                        break;

                    case "-":

                        stack.push(num1-num2);

                        break;

                    case "*":

                        stack.push(num1*num2);

                        break;

                    case "/":

                        stack.push(num1/num2);

                        break;

                }

            }

        }

        return stack.pop();

    }

    private boolean isOperations(String x){

        if(x.equals("+")||x.equals("-")|x.equals("*")||x.equals("/")){

            return true;

        }

        return false;

    }

}

标签:10,num2,17,stack,tokens,求值,LeetCode,表达式
From: https://blog.csdn.net/ayyyy____/article/details/137525457

相关文章

  • LeetCode题练习与总结:螺旋矩阵Ⅱ--59
    一、题目描述给你一个正整数 n,生成一个包含1到 n^2 所有元素,且元素按顺时针顺序螺旋排列的 nxn正方形矩阵matrix。示例1:输入:n=3输出:[[1,2,3],[8,9,4],[7,6,5]]示例2:输入:n=1输出:[[1]]提示:1<=n<=20二、解题思路初始化一个nxn的矩阵,所......
  • Leetcode 第 390 场周赛题解
    Leetcode第390场周赛题解Leetcode第390场周赛题解题目1:3090.每个字符最多出现两次的最长子字符串思路代码复杂度分析题目2:3091.执行操作使数据元素之和大于等于K思路代码复杂度分析题目3:3092.最高频率的ID思路代码复杂度分析题目4:3093.最长公共后缀查询思......
  • leetcode:合并两个有序数组
    voidmerge(int*nums1,intnums1Size,intm,int*nums2,intnums2Size,intn){intl1=m-1;intl2=n-1;intl3=m+n-1;while(l1>=0&&l2>=0)//只要有一个条件为假就跳出循环{if(num1[l1]<num2[l2]){num1[l3--......
  • 算法打卡day37|动态规划篇05| Leetcode1049.最后一块石头的重量II、494.目标和、474.
    算法题Leetcode1049.最后一块石头的重量II题目链接:1049.最后一块石头的重量II 大佬视频讲解:最后一块石头的重量II视频讲解 个人思路和昨天的分割等和子集有些相像,这道题也是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成01背包问题了。解法......
  • 算法小白刷了一周 LeetCode 后的思考
    Hi,我是itchao我自己工作有2两年多的前端开发经验,但是数据结构与算法一直不好,基本就是一个算法小白的水平。听说大公司面试都要手写算法题,最近为了以后能去更好的公司,然后其实心里比较着急,打算在LeetCode刷题,到现在刷了差不多一周,也一直在掘金发博客分享刷题经历,其实也就6......
  • leetcode删除有序数组中的重复项
    一、题目给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你......
  • LeetCode 2220.转换数字的最少位翻转次数
    一、题目二、知识点符号描述运算规则&与两位都为1结果为1|或两位都为0结果为0^异或两位相同为0不同为1~取反(非)0变1,1变0<<左移二进制位全部左移,高位丢弃,低位补0>>右移二进制位全部右移,低位丢弃,高位补符号位>>>无符号右移二进......
  • 【LeetCode刷题记录】15. 三数之和
    15三数之和给你一个整数数组nums,判断是否存在三元组[nums[......
  • Leetcode 2894. 分类求和并作差
    https://leetcode.cn/problems/divisible-and-non-divisible-sums-difference/submissions/521201434/给你两个正整数n和m。现定义两个整数num1和num2,如下所示:num1:范围[1,n]内所有无法被m整除的整数之和。num2:范围[1,n]内所有能够被m整除的整数之和。......
  • 使用 AI 生成正则表达式,告别正则烦恼
    如果你有处理正则表达式的需求,那么这个网站(autoregex.xyz)一定要收藏好。可以根据文字描述生成正则表达式。默认是从文字到正则,不用选择。输入框中输入描述,点击”GO“按钮。等待一会儿,即可生成正则表达式。还可以解析给定的正则,说明其含义。切换成从正则到文字,然......