150. Evaluate Reverse Polish Notation

Description

Evaluate the value of an arithmetic expression in Reverse Polish Notation.

Valid operators are +, -, *, /. Each operand may be an integer or another expression.

Note:

  • Division between two integers should truncate toward zero.

  • The given RPN expression is always valid. That means the expression would always evaluate to a result and there won't be any divide by zero operation.

Constraints

Approach

Examples

Input: ["2", "1", "+", "3", "*"]

Output: 9

Explanation: ((2 + 1) * 3) = 9

Solutions

/**
 * Time complexity : 
 * Space complexity : 
 */

class Solution {
    public int evalRPN(String[] tokens) {
        Stack<Integer> stack = new Stack();
        for(String token: tokens) {
            if("+-*/".contains(token)) {
                int b = stack.pop();
                int a = stack.pop();
                stack.add(operate(token, a, b));
            } else {
                stack.add(Integer.valueOf(token));
            }
        }
        return stack.pop();
    }
    
    private int operate(String operation, int a, int b) {
        if("+".equals(operation)) return a+b;
        if("-".equals(operation)) return a-b;
        if("*".equals(operation)) return a*b;
        if("/".equals(operation)) return a/b;
        return 0;
    }
}

Follow up

Last updated

Was this helpful?