逆波兰表达式java实现
2014-04-17 17:31
204 查看
public int eval(String[] arr) { String operations = "+-*/"; Stack<String> stack = new Stack<String>(); for (String s : arr) { if (!operations.contains(s)) { stack.push(s); } else { int d1 = Integer.valueOf(stack.pop()); int d2 = Integer.valueOf(stack.pop()); int i = operations.indexOf(s); switch (i) { case 0: stack.push(String.valueOf(d1 + d2)); break; case 1: stack.push(String.valueOf(d2 - d1)); break; case 2: stack.push(String.valueOf(d1 * d2)); break; case 3: stack.push(String.valueOf(d2 / d1)); break; } } } return Integer.valueOf(stack.pop()); } @Test public void test() { /* * 在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之间, * 所以,这种表示法也称为中缀表示。 * * 波兰逻辑学家J.Lukasiewicz于1929年提出了另一种表示表达式的方法。 * 按此方法,每一运算符都置于其运算对象之后,故称为后缀表示。 */ String[] s = {"4","3","5","+","*"}; /* * 先算3 + 5 * 再算4 * 8 */ Integer result = this.eval(s); System.out.println(result); // 2 + 9 * 10 - 4 / 2 s = new String[]{"2","9","10","*","+","4","2","/","-"}; result = this.eval(s); System.out.println(result); }
相关文章推荐
- java使用栈和逆波兰表达式实现四则运算
- JAVA实现字符表达式的计算的实现(一)--逆波兰式的实现
- 关于Java写逆波兰表达式堆栈操作简单实现
- Java实现-将普通表达式转换成逆波兰表达式并计算
- 逆波兰表达式的java实现
- LeetCode 逆波兰表达式java实现
- Java实现-逆波兰表达式求值
- Java实现逆波兰表达式(Evaluate Reverse Polish Notation)
- Java实现表达式计算(中缀表达式转化为后缀表达式/逆波兰式)
- Java实现表达式计算(中缀表达式转化为后缀表达式/逆波兰式)
- Java实现表达式计算(中缀表达式转化为后缀表达式/逆波兰式)
- Java实现表达式计算(中缀表达式转化为后缀表达式/逆波兰式)
- Leetcode 150:Evaluate Reverse Polish Notation(计算逆波兰表达式) --java实现
- (学习java)顺序栈实现逆波兰表达式
- Java实现表达式计算(中缀表达式转化为后缀表达式/逆波兰式)
- Java实现表达式计算(中缀表达式转化为后缀表达式/逆波兰式)
- 【Algorithm】逆波兰表达式 Java实现
- 3*(4+6)-7 # 用代码实现这个运算表达式,仅包含逆波兰式部分,算术结果部分未写出
- 去掉空格的java正则表达式实现
- 中缀表达式转后缀表达式java精确实现