Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators 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
Solution:
public class Solution {
public int evalRPN(String[] tokens) {
if(tokens == null)
return 0;
ArrayDeque<Integer> stack = new ArrayDeque<Integer>();
for(int i=0; i<tokens.length; i++)
{
if(tokens[i].equals("+") || tokens[i].equals("-") || tokens[i].equals("*") || tokens[i].equals("/"))
{
int operand2 = stack.pop();
int operand1 = stack.pop();
switch(tokens[i].charAt(0))
{
case '+': stack.push(operand1+operand2); break;
case '-': stack.push(operand1-operand2); break;
case '*': stack.push(operand1*operand2); break;
case '/': stack.push(operand1/operand2); break;
}
}
else
{
int value = Integer.parseInt(tokens[i]);
stack.push(value);
}
}
return stack.pop();
}
}
No comments :
Post a Comment