【leetcode】Evaluate Reverse Polish Notation

题目的意思就是计算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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值