leetcode150- Evaluate Reverse Polish Notation- medium
Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are +
, -
, *
, /
. Each operand may be an integer or another expression.
Some examples:
["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
用Stack。是数字,压入stack,是符号,进行处理。吐两个数n1,n2出来做算术,小心要n2 +-*/ n1,因为stack的原因。
小改进:判断是不是符号可以用 String operators = "+-*/"; if (operators.contains(token)) {} 来写,优雅一点。
class Solution { public int evalRPN(String[] tokens) { if (tokens == null || tokens.length == 0) { return 0; } Stack<Integer> stack = new Stack<>(); for (int i = 0; i < tokens.length; i++) { if (!isOperator(tokens[i])) { stack.push(Integer.parseInt(tokens[i])); } else { int i1 = stack.pop(); int i2 = stack.pop(); if (tokens[i].equals("+")) { stack.push(i2 + i1); } else if (tokens[i].equals("-")) { stack.push(i2 - i1); } else if (tokens[i].equals("*")) { stack.push(i2 * i1); } else if (tokens[i].equals("/")) { stack.push(i2 / i1); } } } return stack.pop(); } private boolean isOperator(String s) { return s.equals("+") || s.equals("-") || s.equals("*") || s.equals("/"); } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· 深入理解Mybatis分库分表执行原理
· 使用 Dify + LLM 构建精确任务处理应用