---
title: '150. Evaluate Reverse Polish Notation'
description: You are given an array of strings tokens that represents an arithmetic expression in a Reverse Polish Notation
sidebar:
  label: 'Evaluate Reverse Polish Notation'
  badge: 'Medium'
---

Array

### Example 1:
- Input: `tokens = ["2","1","+","3","*"]`
- Output: `9`
- Explanation: `((2 + 1`) * `3`) = `9`

### Example 2:
- Input: `tokens = ["4","13","5","/","+"]`
- Output: `6`
- Explanation: `(4 + (13 / 5`)) = `6`

### Example 3:
- Input: `tokens = ["10","6","9","3","+","-11","*","/","*","17","+","5","+"]`
- Output: `22`
- Explanation: `((10 * (6 / ((9 + 3`) * `-11`))) + `17`) + `5 = ((10 * (6 / (12 * -11`))) + `17`) + `5 = ((10 * (6 / -132`)) + `17`) + `5 = ((10 * 0`) + `17`) + `5 = (0 + 17`) + `5 = 17 + 5 = 22`

### Constraints:

- `1 <= tokens.length <= 10^4`
- `tokens[i]` is either an operator: "+", "-", "*", or "/", or an integer in the range [-200, 200].

## Approach

```mermaid
flowchart TD
  S(["evalRPN(tokens)"]) --> I["stack = [], operations = + - * /"]
  I --> L{"more token c?"}
  L -- no --> E(["return stack[0]"])
  L -- yes --> Q{"c is an operator?"}
  Q -- no --> N["stack.append(int(c))"]
  N --> L
  Q -- yes --> P["y = stack.pop(), x = stack.pop() — order matters"]
  P --> C["stack.append(operations[c](x, y))"]
  C --> L
```

## Solution

```py
class Solution:
    def evalRPN(self, tokens: List[str]) -> int:
        stack = []
        operations = {
            "+": lambda x, y: int(x + y),
            "-": lambda x, y: int(x - y),
            "*": lambda x, y: int(x * y),
            "/": lambda x, y: int(x / y),
        }

        for c in tokens:
            if c in operations:
                y = stack.pop()
                x = stack.pop()
                calc_func = operations[c]
                result = calc_func(x, y)
                stack.append(result)
            else:
                stack.append(int(c))

        return stack[0]
```

## Explanation

[Evaluate Reverse Polish Notation - Leetcode 150 - Python](https://www.youtube.com/watch?v=iu0082c4HDE)
