Menu
CoddyTech

Evaluate Reverse Polish Notation

СреднеСтекpython iconjava iconcpp iconc iconjs icon+10

Тебе дано арифметическое выражение в обратной польской записи в виде массива токенов. Каждый оператор стоит сразу после двух своих операндов, поэтому 3 4 + означает 3 + 4, а 3 4 + 2 * означает (3 + 4) * 2, без скобок. Каждый токен — это целое число или один из операторов +, -, * и /.

Верни значение выражения. При делении дробная часть отбрасывается в сторону нуля: 7 / 2 — это 3, а -7 / 2 — это -3.

Функция

evalRPN(tokens: string-array) → integer
tokensstring-array
числа и операторы выражения по порядку
Возвращаетinteger
значение выражения

Ограничения

  • 1 ≤ tokens.length ≤ 104
  • Каждый токен — это +, -, *, / или целое число от -200 до 200, записанное в десятичной системе счисления, с ведущим знаком минус, если оно отрицательное.
  • tokens — допустимое выражение в обратной польской нотации.
  • Деления на ноль не происходит, и каждое промежуточное и конечное значение больше -231 и меньше 231.

Примеры

Ввод
tokens = ["8", "3", "-", "4", "*"]
Вывод
20
Пояснение
- применяется сначала к 8, затем к 3, поэтому результат равен 5, а не -5. Затем * умножает это 5 на 4, что даёт 20.
challenge icon

Дополнительный вопрос

Можешь ли ты восстановить выражение в обычной записи, например (3 + 4) * 2, добавив скобки только там, где они меняют смысл?

Сбросить код
def evalRPN(tokens):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргумент

tokens = ["8", "3", "-", "4", "*"]

Ожидаемый вывод

20