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();
    }
}
相关推荐
\xin3 分钟前
pikachu自编SQL(POST)
java·数据库·sql
一行代码一行诗++5 分钟前
注释是什么和注释该怎么写(C语言)
java·前端·javascript
2301_8159019713 分钟前
SQL如何将多行记录聚合成逗号分隔字符串_GROUP_CONCAT技巧
jvm·数据库·python
西索斯14 分钟前
Claude API 报 529 Overloaded 怎么办?3 种方案实测,最后一种最省心
python·claude
Flittly15 分钟前
【LangGraph新手村系列】(3)PostgreSQL 持久化检查点:让状态跨越进程与重启
人工智能·python·langchain
.柒宇.18 分钟前
FastAPI 基础指南:从入门到实战
开发语言·python·fastapi
ん贤18 分钟前
加密算法(对称、非对称、哈希、签名...)
算法·哈希算法
拾贰_C20 分钟前
【OpenClaw | openai | QQ】 配置QQ qot机器人
运维·人工智能·ubuntu·面试·prompt
桌面运维家25 分钟前
服务器进程异常监控:快速定位与排障实战指南
运维·服务器
JAVA面经实录91732 分钟前
企业级java+LangChain4j-RAG系统 限流熔断降级
java·开发语言·分布式·langchain