Принципиально я вижу тут несколько вариантов.
Если слов умеренное количество можно использовать обычный hash map.
То есть ключём будет слово и значением будет количество. Сложили все слова в хешмап, потом выбрали максимальное значение. Это решение простое в написании, но при большом количестве слов может быть не эффективным, в первую очередь по памяти.
Если hash map не справляется то использовать структуру данных бор (префиксное дерево), с подсчётом количества слов:
informatics.mccme.ru/mod/book/view.php?id=435
habrahabr.ru/post/111874
Если бор тоже не влезает по памяти, то можно использовать сжатый бор:
habrahabr.ru/post/151421
Ну и если слов вдруг совсем много:
mapreduce
habrahabr.ru/post/103467