Можете подсказать алгоритм поиска наиболее часто встречающихся подстрок в тексте?
Суффиксное дерево (также на английском). Строится за линейное время, время поиска пропроционально длине искомой строки, памяти, правда, много занимает. (Забавно, что в Дискретном анализе (2003) И. В. Романовского в главе «Суффиксное дерево» дается пример как раз с этой же фразой о Карле и Кларе.)
Попробуйте структуру данных trie
en.wikipedia.org/wiki/Trie