bekitty

我不会讲大道理,可我心里有一杆秤。 我看这个世界很苛刻,可我的心里很宽容。 我不需要权力与利益,可是我需要公平与正义。 我始终知道正道难行,可不得不行。

导航

leetcode-计算逆波兰表示法的值

Posted on 2014-07-29 09:38  bekitty  阅读(265)  评论(0编辑  收藏  举报
package edu.bupt.cici.leetcode;

import java.util.ArrayList;

public class EvaluateReversePolishNotation {

public int evalRPN(String[] tokens) {
int temp = 0;
int length = tokens.length;
ArrayList<Integer> stack = new ArrayList<Integer>();

for (int i = 0; i < length; i++) {
if (!tokens[i].matches("^[\\+\\-*/]$")) {
temp = Integer.parseInt(tokens[i]);
stack.add(Integer.parseInt(tokens[i]));
} else {
switch (tokens[i]) {
case "+":
temp = stack.get(stack.size() - 2)
+ stack.get(stack.size() - 1);
break;
case "-":
temp = stack.get(stack.size() - 2)
- stack.get(stack.size() - 1);
break;
case "*":
temp = stack.get(stack.size() - 2)
* stack.get(stack.size() - 1);
break;
case "/":
temp = stack.get(stack.size() - 2)
/ stack.get(stack.size() - 1);
break;

default:
break;
}
stack.remove(stack.size() - 1);
stack.remove(stack.size() - 1);
stack.add(temp);
}
}

return temp;

}

public static void main(String[] args) {
// TODO Auto-generated method stub
String[] ipt = { "-3","9","*" };
EvaluateReversePolishNotation eRPN = new EvaluateReversePolishNotation();
int opt = eRPN.evalRPN(ipt);
System.out.println(opt);

}

}