Количество слов в тексте
Объединяем слова из всех заданных строк.
Как к ней подойти
Увидите, как множества помогают сравнивать группы без повторяющихся элементов.
Множество хранит каждый элемент один раз. Пересечение a & b оставляет общие элементы, разность a - b - только элементы a, а объединение a | b собирает обе группы. Если важен порядок вывода, отсортируйте результат отдельно.
split без аргумента учитывает повторные пробелы; множество удаляет повторы.
Проверьте перед запуском
- Не переводите слова в нижний регистр и не удаляйте пунктуацию: условие этого не требует.
Сравните свой подход
Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.
Ваше принятое решение
Рекомендуемое решение: Множество слов
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) слов.