Разбор команд для Goal Parser

Замените () на o и (al) на al, оставив G неизменным. Такой вариант также сохранит уже готовую строку Goal из первого примера.

Короткий ответ

Что ответить на собеседовании

Замените () на o и (al) на al, оставив G неизменным. Такой вариант также сохранит уже готовую строку Goal из первого примера.

Подробный разбор

Ответ с пояснениями

Условие

Дана строка cmd, содержащая последовательность команд для программы Goal Parser. Команды могут быть только следующих видов: "G", "()" и "(al)". Их смысл следующий:

  • "G" → "G"
  • "()" → "o"
  • "(al)" → "al" Необходимо пройти по строке cmd, заменить каждый найденный шаблон согласно правилам и собрать получившуюся строку.

Пример 1: Ввод: cmd = "Goal" Вывод: "Goal" Пояснение:

  • "G" → "G"
  • остальные символы "o", "a", "l" уже находятся в нужном виде и не требуют замены.
  • Итоговое слово остаётся "Goal".

Пример 2: Ввод: cmd = "G()(al)" Вывод: "Goal" Пояснение:

  • "G" → "G"
  • "()" → "o"
  • "(al)" → "al"
  • Сцепив части получаем "G" + "o" + "al" = "Goal".

Пример 3: Ввод: cmd = "G()()()()(al)" Вывод: "Gooooal" Пояснение:

  • "G" → "G"
  • каждая последовательность "()" преобразуется в "o" (четыре раза → "oooo")
  • "(al)" → "al"
  • Итог: "G" + "oooo" + "al" = "Gooooal".

Ответ

Замените () на o и (al) на al, оставив G неизменным. Такой вариант также сохранит уже готовую строку Goal из первого примера.

def interpret(cmd):
    return cmd.replace('()', 'o').replace('(al)', 'al')

assert interpret('G()(al)') == 'Goal'
assert interpret('G()()()()(al)') == 'Gooooal'
assert interpret('Goal') == 'Goal'

Два шаблона не перекрываются и не создают друг друга после замены, поэтому порядок этих замен не меняет результат. Время и память — O(n).

Есть неточность условия: строка Goal не состоит только из перечисленных исходных токенов. Показанное решение допускает уже интерпретированные символы, как требуют примеры. Если нужна строгая проверка грамматики, следует сканировать токены и отклонять неизвестные фрагменты.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее