Leetcode 150:逆波兰表达式求值

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

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

示例 1:

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

示例 2:

复制代码
输入:tokens = ["4","13","5","/","+"]
输出:6
解释:该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6
java 复制代码
import java.util.Stack;

public class title150 {
    public static void main(String[] args) {
        String[] tokens = {"2", "1", "+", "3", "*"};
        System.out.println(evalRPN(tokens));
    }

    public static int evalRPN(String[] tokens) {
        Stack<Integer> stack = new Stack<>();
        Integer a, b, c;
        for (int i = 0; i < tokens.length; i++) {
            //1.先判断是否为四种符号
            String s = tokens[i];
            if (s.equals("+")) {
                //需要将字符串形式的数字转化为int型
                a = stack.pop();
                b = stack.pop();
                c = a + b;
                stack.push(c);
            } else if (s.equals("-")) {
                a = stack.pop();
                b = stack.pop();
                c = b - a;
                stack.push(c);
            } else if (s.equals("*")) {
                a = stack.pop();
                b = stack.pop();
                c = a * b;
                stack.push(c);
            } else if (s.equals("/")) {
                a = stack.pop();
                b = stack.pop();
                c = b / a;
                stack.push(c);
            } else {
                //先将字符串数字转换为int,再入栈
                stack.push(Integer.valueOf(s));
            }
        }
        return stack.pop();
    }
}
相关推荐
Tiandaren2 小时前
Selenium 4 教程:自动化 WebDriver 管理与 Cookie 提取 || 用于解决chromedriver版本不匹配问题
selenium·测试工具·算法·自动化
花嫁代二娃2 小时前
Linux:环境变量
linux
胚芽鞘6812 小时前
关于java项目中maven的理解
java·数据库·maven
nbsaas-boot3 小时前
Java 正则表达式白皮书:语法详解、工程实践与常用表达式库
开发语言·python·mysql
岁忧3 小时前
(LeetCode 面试经典 150 题 ) 11. 盛最多水的容器 (贪心+双指针)
java·c++·算法·leetcode·面试·go
仗剑_走天涯3 小时前
基于pytorch.nn模块实现线性模型
人工智能·pytorch·python·深度学习
乌托邦的逃亡者3 小时前
Docker的/var/lib/docker/目录占用100%的处理方法
运维·docker·容器
chao_7893 小时前
二分查找篇——搜索旋转排序数组【LeetCode】两次二分查找
开发语言·数据结构·python·算法·leetcode
CJi0NG3 小时前
【自用】JavaSE--算法、正则表达式、异常
java
ldj20203 小时前
Jenkins 流水线配置
运维·jenkins