Evaluate the value of arithmetic expression in Reverse Polish Notation.
Valid operator are +,-,*,/. Each operand may be an integer or another expression.
Some examples:
["2", "1", "+", "3", "*"] -> ((2+1)*3) -> 9
["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
分析:后缀表达式操作。
栈的应用,如果碰见数字,则压栈,碰见运算符则弹出两个元素,对两个元素进行数学运算后结果压栈。
public class Solution {
public int evalRPN(String[] tokens) {
Stack<Integer> st = new Stack<Integer>();
for(String token : tokens){
if(token.matches("-?[0-9]+")){
st.push(Integer.parseInt(token));
}else{
int num2 = st.pop();
int num1 = st.pop();
if(token.equals("+")){
st.push(num1+num2);
}else if(token.equals("-")){
st.push(num1-num2);
}else if(token.equals("*")){
st.push(num1*num2);
}else if(token.equals("/")){
st.push(num1/num2);
}
}
}
return st.pop();
}
}