Вступить в клуб →
лёгкаявопросСтек, очередь и куча

Обратная польская запись: что посчитает стек на выражении 5 1 2 + 4 * + 3 -

Калькулятор обратной польской записи читает токены слева направо: число кладётся на стек, операция снимает два верхних числа и кладёт обратно результат.

def rpn(tokens):
    stack = []
    for t in tokens:
        if t in ('+', '-', '*'):
            b = stack.pop()
            a = stack.pop()
            if t == '+':
                stack.append(a + b)
            elif t == '-':
                stack.append(a - b)
            else:
                stack.append(a * b)
        else:
            stack.append(int(t))
    return stack.pop()


print(rpn(['5', '1', '2', '+', '4', '*', '+', '3', '-']))

Что выведет этот код?

  • 17
  • -14
  • Код упадёт с IndexError: к последней операции в стеке не останется двух чисел
  • 14

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела