Количество слов в тексте
Вы решили задачу. Теперь можно сравнить подходы.
Объединяем слова из всех заданных строк.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Множество слов
split без аргумента учитывает повторные пробелы; множество удаляет повторы.
words = set()
for _ in range(int(input())):
words.update(input().split())
print(len(words))
Время: O(W) в среднем без учёта длины слов. Память: O(U + L) слов, L — текущая строка.
Другой способ: Сортировка слов
Сортируем все слова и считаем переходы между группами.
words = []
for _ in range(int(input())):
words.extend(input().split())
words.sort()
print((1 if words else 0) + sum(words[i] != words[i - 1] for i in range(1, len(words))))
Время: O(W log W) сравнений. Память: O(W) слов.
На что обратить внимание
- Не переводите слова в нижний регистр и не удаляйте пунктуацию: условие этого не требует.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.