Есть ли какой-либо алгоритм, который можно использовать для поиска наиболее распространенных фраз (или подстрок) в строке? Например, следующая строка будет иметь "привет мир" в качестве наиболее распространенной двухбуквенной фразы:
"hello world this is hello world. hello world repeats three times in this string!"
В приведенной выше строке наиболее распространенная строка (после символа пустой строки, которая повторяется бесконечно много раз) будет символом пробела .
Есть ли способ генерировать список общих подстрок в этой строке, от наиболее распространенных до наименее общих?