Посчитать частоту появления каждого слова в строке
Подскажите пожалуйста как можно посчитать частоту каждого слова на языке C?
Например строка: "rtr yjh we rtr"
Вывод:
rtr 2
yjr 1
we 1
Большое спасибо за любые советы
Ответы (1 шт):
Если это учебная задачка и не требуется серьёзная оптимизация, то тогда алгоритм должен быть такой: заведи массив структур. Структура будет содержать указатель на char (тут будет хранится сама строка) и частоту появления слова. Парси каждое слово. Для каждого слова линейным поиском (самым простым) просматривай созданный массив. Если слово уже встречалось - прибавляй +1 к частоте, если не встречалось, то динамически выдели место под строку, скопируй туда слово, указатель на эту память запиши в поле со строкой и установи частоту в 1. И так далее....
Можешь запариться и реализовать более сложную структуру данных и более быстрый поиск.
Используемые структуры данных (для 100 разных слов):
struct Word_Data {
char *word;
int frequency;
}
struct Word_Data words[100];