Здесь есть две проблемы:
1) разбиение каждой строки на слова
Функция strtok()
может разбивать строку на слова.
Это значимое упражнение - представить, как вы можете написать свой собственный эквивалент strtok
.
Проект rosetta демонстрирует как strtok
, так и индивидуальный подход к решению этой проблемы.
Естественно, я бы написал свой собственный парсер, так как это тот код, который мне нравится. Это может быть забавное упражнение для вас.
2) найти те слова в одной строке, которые также находятся в другой
Если вы перебираете каждое слово в одной строке для каждого слова в другом, оно имеет O (n * n) сложность.
Если вы индексируете слова в одной строке, это займет всего O (n), что значительно быстрее (если ваш ввод достаточно велик, чтобы сделать это интересным). Стоит представить, как можно построить хеш-таблицу слов в одной строке, чтобы можно было искать слова в другой.