【LeetCode-面试算法经典-Java实现】【150-Evaluate Reverse Polish Notation(计算逆波兰式)】
2015-08-20 06:37
726 查看
【150-Evaluate Reverse Polish Notation(计算逆波兰式)】
【LeetCode-面试算法经典-Java实现】【所有题目目录索引】
原题
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
题目大意
计算逆波半表达式的值,有效的运算符是:+、-、*、/,每个操作数要么是一个整数要么是另一个表达式解题思路
使用栈进行操作代码实现
算法实现类import java.util.Stack; public class Solution { public int evalRPN(String[] tokens) { // 参数校验 if (tokens == null || tokens.length < 1) { throw new IllegalArgumentException(); } int op1; int op2; // 操作数栈 Stack<Integer> stack = new Stack<>(); for (String token: tokens) { // 说明是运算符,要取栈顶两个元素进行运算 if ("+".equals(token) || "-".equals(token) || "*".equals(token) || "/".equals(token)) { // 取栈顶元素 op2 = stack.pop(); op1 = stack.pop(); // 进行运算 switch (token.charAt(0)) { case '+': op1 += op2; break; case '-': op1 -= op2; break; case '*': op1 *= op2; break; case '/': op1 /= op2; break; } // 结果入栈 stack.push(op1); } // 说明是操作数,入栈 else { stack.push(Integer.parseInt(token)); } } return stack.pop(); } }
评测结果
点击图片,鼠标不释放,拖动一段位置,释放后在新的窗口中查看完整图片。特别说明
欢迎转载,转载请注明出处【/article/1324052.html】
相关文章推荐
- 设计模式实例(Lua)笔记之二(AbstractFactory抽象工厂模式)
- 设计模式实例(Lua)笔记之一(Factory Method工厂方法模式)
- lua 可变参数
- tolua++的一些api的
- Lua闭包的理解
- Python游戏服务器开发日记(三)用greenlet模拟lua coroutine的研究
- ngx_lua模块学习笔记
- pcall
- Lua 语言基础
- UVA 327 -Evaluating Simple C Expressions(栈)
- as3.0用asxls导出xls文件为luaTabel
- ulua+PureMVC框架简单热更新使用-后续web服务器篇
- luajavabridge 使用过程出现问题的总结
- angluarjs中指令的使用方式
- lua中实现的base64加密
- 【Lua 第一篇】 Manager + Data 的定义与应用
- Lua语言介绍
- ulua
- ****************本文是Lua编写的游戏接入多盟SDK*******************
- leetcode 150 —— Evaluate Reverse Polish Notation