package leetcode;
import java.util.HashSet;
import java.util.Stack;
public class demo_150 {
public int evalRPN(String[] tokens) {
HashSet<String> hs=new HashSet<String>();
hs.add("*");
hs.add("+");
hs.add("-");
hs.add("/");
Stack<String> stack=new Stack<String>();
//将数组中的所有数据存放到栈中
for(String s:tokens) {
//如果是运算符取出栈中的前两个数字进行运算后在存入栈中
if(hs.contains(s)) {
int a=Integer.valueOf(stack.pop());
int b=Integer.valueOf(stack.pop());
int c=0;
if(s.equals("*")) {
c=b*a;
}
if(s.equals("+")) {
c=b+a;
}
if(s.equals("/")) {
c=b/a;
}
if(s.equals("-")) {
c=b-a;
}
stack.push(String.valueOf(c));
}
//数字直接放入栈中
else {
stack.push(s);
}
}
System.out.println(stack.peek());
return Integer.valueOf(stack.peek());
}
public static void main(String[] args) {
// TODO Auto-generated method stub
demo_150 d150=new demo_150();
String[] tokens= {"10","6","9","3","+","-11","*","/","*","17","+","5","+"};
d150.evalRPN(tokens);
}
}