代码随想录刷题|LeetCode 20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值(下)

简介: 代码随想录刷题|LeetCode 20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值

150. 逆波兰表达式求值

题目链接:力扣

思路

       首先要知道什么是逆波兰表达式,逆波兰表达式是后缀表达式,我们平时看到的表达式为中缀表达式


096ef49600a0447b985934ca2e14a76f.png

   逆波兰表达式是为了让计算机更加准确的计算。当见到一个数的时候就把它推入栈中;在遇到一个运算符的时,该运算符就作用于该栈弹出的两个数上,再将所得的结果推入栈中


       在代码书写的过程中,因为推入顺序的原因,- 号运算和 / 号运算 需要左特殊处理 ,后推出的 -(/)前推出的


逆波兰表达式求值

       如果是数字,就推出栈;如果是运算符,就弹出两个数字运算,再将结果推入栈

       最后栈中剩下的就是结果

class Solution {
    public int evalRPN(String[] tokens) {
        // 定义一个栈
        Stack<Integer> stack = new Stack<>();
        for (String s : tokens) {
            if ("+".equals(s)) {
                stack.push(stack.pop() + stack.pop());
            } else if ("-".equals(s)) {
                stack.push(-stack.pop() + stack.pop());
            } else if ("*".equals(s)) {
                stack.push(stack.pop() * stack.pop());
            } else if ("/".equals(s)) {
                int temp1 = stack.pop();
                int temp2 = stack.pop();
                stack.push( temp2 / temp1 );
            } else {
                stack.push(Integer.parseInt(s));
            }
        }
        return stack.pop();
    }
}


相关文章
|
12天前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
12天前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
13天前
|
索引
【LeetCode刷题】二分查找:山脉数组的峰顶索引、寻找峰值
【LeetCode刷题】二分查找:山脉数组的峰顶索引、寻找峰值
|
13天前
|
算法
【LeetCode刷题】滑动窗口解决问题:串联所有单词的子串(困难)、最小覆盖子串(困难)
【LeetCode刷题】滑动窗口解决问题:串联所有单词的子串(困难)、最小覆盖子串(困难)
|
13天前
|
算法 容器
【LeetCode刷题】滑动窗口解决问题:水果成篮、找到字符串中所有字母异位词
【LeetCode刷题】滑动窗口解决问题:水果成篮、找到字符串中所有字母异位词
|
13天前
【LeetCode刷题】专题三:二分查找模板
【LeetCode刷题】专题三:二分查找模板
【LeetCode刷题】专题三:二分查找模板
|
7天前
|
索引
leetcode题解:26.删除有序数组重复项
leetcode题解:26.删除有序数组重复项
6 0
|
13天前
【LeetCode刷题】前缀和解决问题:742.寻找数组的中心下标、238.除自身以外数组的乘积
【LeetCode刷题】前缀和解决问题:742.寻找数组的中心下标、238.除自身以外数组的乘积
|
13天前
【LeetCode刷题】二分查找:寻找旋转排序数组中的最小值、点名
【LeetCode刷题】二分查找:寻找旋转排序数组中的最小值、点名
|
13天前
【LeetCode刷题】滑动窗口思想解决:最大连续1的个数 III、将x减到0的最小操作数
【LeetCode刷题】滑动窗口思想解决:最大连续1的个数 III、将x减到0的最小操作数