【LintCode】Evaluate Reverse Polish Notation 逆波兰表达式求值
2015-07-30 17:12
537 查看
求逆波兰表达式的值。
在逆波兰表达法中,其有效的运算符号包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰计数表达。
样例
[“2”, “1”, “+”, “3”, ““] -> ((2 + 1) 3) -> 9
[“4”, “13”, “5”, “/”, “+”] -> (4 + (13 / 5)) -> 6
说明
什么是逆波兰表达式?
http://en.wikipedia.org/wiki/Reverse_Polish_notation
在逆波兰表达法中,其有效的运算符号包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰计数表达。
样例
[“2”, “1”, “+”, “3”, ““] -> ((2 + 1) 3) -> 9
[“4”, “13”, “5”, “/”, “+”] -> (4 + (13 / 5)) -> 6
说明
什么是逆波兰表达式?
http://en.wikipedia.org/wiki/Reverse_Polish_notation
public class Solution { /** * @param tokens The Reverse Polish Notation * @return the value */ public int evalRPN(String[] tokens) { if(null == tokens || tokens.length == 0) return 0; Set<String> cSet = new HashSet<String>(); cSet.add("+"); cSet.add("-"); cSet.add("*"); cSet.add("/"); Stack<Integer> stack = new Stack<Integer>(); for(int i = 0; i < tokens.length; i++) { if(!cSet.contains(tokens[i])) { stack.push(Integer.valueOf(tokens[i])); }else { int b = stack.pop(); int a = stack.pop(); int c = 0; char[] arr = tokens[i].toCharArray(); switch (arr[0]){ case '+': c = a + b; break; case '-': c = a - b; break; case '*': c = a * b; break; case '/': c = a / b; } stack.push(c); } } return stack.peek(); } }
相关文章推荐
- Lua 学习备忘录3
- tengine安装lua
- Lua 学习备忘录2
- Lua脚本语言入门
- lua 的table排序
- CSLight研究院之和uLua的效率对比第一弹
- scikit-learn:3.5. Validation curves: plotting scores to evaluate models
- lua 文件读写
- 【转】Lua脚本语法说明简介
- lua os.date()参数
- Install and Evaluation of Yahoo's Kafka Manager
- [转]使用 C 编写 Lua 模块
- Lua 学习备忘录1
- Lua 资源热更新
- Lua 弱引用table
- Lua的面向对象——多重继承、私密性
- Lua的面向对象——类和继承
- Lua 基础:调用函数时用点号还是用冒号
- Lua的全局变量与非全局环境
- Lua的模块编写与module函数