重拾编程之路--数据结构--前缀表示法求值
2016-01-11 20:00
225 查看
package com.lulu.leetcode; import java.util.Stack; /** * 波兰表达式求值(前缀表达式)---与后缀表达式不同的是计算两个数的值时,用第一个栈顶元素操作第二个栈顶元素 * 思路: * 遇到变量或数字直接入栈; * 遇到操作符计算栈顶两个元素的值,结果入栈 * @author lulu * */ public class C_evalPN{ public int evalRPN(String[] tokens) { if (tokens == null) return 0; Stack<String> stack = new Stack<String>(); int result = 0; for (int i = 0; i < tokens.length; i++) { String ch = tokens[i]; int num1 = 0; int num2 = 0; switch (ch) { case "+": num2 = Integer.parseInt(stack.pop()); num1 = Integer.parseInt(stack.pop()); result =num2+num1; stack.push(result+""); break; case "-": num2 = Integer.parseInt(stack.pop()); num1 = Integer.parseInt(stack.pop()); result =num2-num1; stack.push(result+""); break; case "*": num2 = Integer.parseInt(stack.pop()); num1 = Integer.parseInt(stack.pop()); result = num2 * num1; stack.push(result+""); break; case "/": num2 = Integer.parseInt(stack.pop()); num1 = Integer.parseInt(stack.pop()); result = num2 / num1; stack.push(result+""); break; default: stack.push(ch); break; } } if(!stack.isEmpty()){ return Integer.parseInt(stack.pop()); } return result; } }
相关文章推荐
- 重拾编程之路--数据结构--后缀表示序列求值
- 重拾编程之路--数据结构--中缀表示法转换成前缀表示法
- 重拾编程之路--数据结构--中缀表示法转换成后缀表示法
- 数据结构复习
- 数据结构与算法——归并排序
- opencv 基本数据结构
- 数据结构之稀疏矩阵存储实现
- 学习笔记------数据结构(C语言版) 静态链表
- sunday算法
- 初学循环队列
- BF算法
- IOS-底层数据结构
- Haffman编码/译码——数据结构作业(二)
- 校园导航——数据结构作业(一)
- Java之Pcap文件解析(二:建立数据结构)
- 学数据结构,仅仅须要主要的编程体验
- 数据结构_3:栈:STL
- 数据结构_3:栈:C++
- 数据结构之 数组
- 【Java】Java数据结构和算法(二)——栈和队列