【leetcode】Evaluate Reverse Polish Notation
来源:互联网 发布:知乎最高赞答案 编辑:程序博客网 时间:2024/05/17 00:57
题目的意思就是计算RPN表达式的值,leetcode上原题太简单,很多情况都没有考虑,比如大整数的情况、如果操作过程出错的情况等等
解决方法为用一个栈即可,这点在数据结构课上算是基本的了
代码如下:
import java.math.BigInteger;import java.util.Stack;/** * 计算RPN表达式的值 * @author JeremyCai * */public class Solution {public int evalRPN(String[] tokens){try{Stack<String> stack = new Stack<String>();int size = tokens.length;for(int i = 0; i <= size - 1; i++){if(tokens[i].equals("/")){BigInteger second = new BigInteger(stack.pop());BigInteger first = new BigInteger(stack.pop());stack.push(first.divide(second).toString());}else if(tokens[i].equals("*")){BigInteger second = new BigInteger(stack.pop());BigInteger first = new BigInteger(stack.pop());stack.push(first.multiply(second).toString());}else if(tokens[i].equals("+")){BigInteger second = new BigInteger(stack.pop());BigInteger first = new BigInteger(stack.pop());stack.push(first.add(second).toString());}else if(tokens[i].equals("-")){BigInteger second = new BigInteger(stack.pop());BigInteger first = new BigInteger(stack.pop());stack.push(first.subtract(second).toString());}else{stack.push(tokens[i]);}}if(stack.size() != 1)return -1;//此处返回-1不是很合理return Integer.parseInt(stack.peek());}catch(Exception e){return -1;//此处返回-1不是很合理}}public static void main(String[] args){Solution s = new Solution();String[] tokens = new String[5];tokens[0] = "2";tokens[1] = "1";tokens[2] = "+";tokens[3] = "3";tokens[4] = "*";System.out.println(s.evalRPN(tokens));}}
0 0
- Evaluate Reverse Polish Notation | leetcode
- leetcode-Evaluate Reverse Polish Notation
- Leetcode: Evaluate Reverse Polish Notation
- LeetCode - Evaluate Reverse Polish Notation
- LeetCode | Evaluate Reverse Polish Notation
- Leetcode: Evaluate Reverse Polish Notation
- Leetcode: Evaluate Reverse Polish Notation
- Evaluate Reverse Polish Notation (LeetCode)
- leetcode: Evaluate Reverse Polish Notation
- Leetcode Evaluate Reverse Polish Notation
- [LeetCode] Evaluate Reverse Polish Notation
- [LeetCode] Evaluate Reverse Polish Notation
- Evaluate Reverse Polish Notation -- LeetCode
- 【LeetCode】Evaluate Reverse Polish Notation
- LeetCode-Evaluate Reverse Polish Notation
- LeetCode:Evaluate Reverse Polish Notation
- LeetCode Evaluate Reverse Polish Notation
- Leetcode:Evaluate Reverse Polish Notation
- Android ListView中子控件的状态保存以及点击子控件改变子控件状态
- zint编译过程记录
- ubuntu 12.04 python+django+mysql+apache安装
- 利用getJson+ashx实现商品属性选择(C#)
- Linux内核学习第3天
- 【leetcode】Evaluate Reverse Polish Notation
- 【数学】HDU 1214 圆桌会议
- 带你深入了解IBM DB2数据库的备份与恢复
- 用iOS写一个生成单例的方法
- [2012山东省第三届ACM大学生程序设计竞赛]——n a^o7 !
- 关于集成显卡和独立显卡
- 写在前面
- SP2010开发和VS2010专家"食谱"--第五章节—Web部件(3)--创建启用AJAX的Web部件
- 字符串逆反