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();
    }
}
相关推荐
荣光波比8 小时前
MySQL数据库(一)—— 数据库基础与MySQL安装管理指南
运维·数据库·mysql·云计算
楼田莉子8 小时前
C++动态规划算法:斐波那契数列模型
c++·学习·算法·动态规划
aramae8 小时前
终端之外:解锁Linux命令行的魔法与力量
linux·服务器·apache
1373i8 小时前
【Python】通俗理解反向传播
深度学习·算法·机器学习
郭庆汝8 小时前
Windows安装java流程
java·windows·android studio
Madison-No78 小时前
【C++】日期类运算符重载实战
c++·算法
Yvonne爱编码8 小时前
后端编程开发路径:从入门到精通的系统性探索
java·前端·后端·python·sql·go
椰子今天很可爱8 小时前
线程分离和线程同步互斥
linux·c++
cici158748 小时前
基于K-SVD的稀疏编码去噪算法
算法
迦蓝叶8 小时前
JAiRouter 0.8.0 发布:Docker 全自动化交付 + 多架构镜像,一键上线不是梦
java·人工智能·网关·docker·ai·架构·自动化