Номер появления слова
Вы решили задачу. Теперь можно сравнить подходы.
Перед увеличением счётчика выводим прежнюю частоту.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Словарь
Начальная частота нулевая; каждый обработанный экземпляр увеличивает её на один.
counts = {}
for word in input().split():
print(counts.get(word, 0), end=" ")
counts[word] = counts.get(word, 0) + 1
Время: O(n) в среднем. Память: O(n) включая токены.
Другой способ: Подсчёт в префиксе
Для каждого слова непосредственно считаем его вхождения среди предыдущих. Подходит для объяснения, но медленнее.
words = input().split()
for i, word in enumerate(words):
print(words[:i].count(word), end=" ")
Время: O(n²). Память: O(n).
На что обратить внимание
- Текущее вхождение не должно попадать в выведенный счётчик.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.