Вопрос: У меня длинная строка, и мне нужно найти счетчик вхождений всех подстрок, присутствующих в этой строке, и распечатать список всех подстрок и их счетчик (если count> 1) в порядке убывания количества.Для подсчета вхождений всех подстрок в строке C#
Пример:
String = "abcdabcd"
Результат:
Substrings Count
abcd 2
abc 2
bcd 2
ab 2
bc 2
cd 2
a 2
b 2
c 2
d 2
Проблема: Строка может быть 5000 символов долго, и я не в состоянии найти эффективный способ для достижения этой цели (КПД очень важно. для применения)
Есть ли какой-либо алгоритм или многопоточность, это возможно. пожалуйста помоги.
Пожалуйста, посмотрите на * дерево суффиксов * или/и * Суффикс массив * https://en.wikipedia.org/ wiki/Suffix_array –
@DmitryBychenko: Я пробовал с деревом суффиксов и суффиксным массивом, но из дерева суффиксов не удается найти все подстроки. Однако, если подстрочная строка задана в качестве входных данных, вы можете очень быстро найти ее количество в суффиксном дереве. –
Возможный дубликат [Найти общую строку в списке строк] (http://stackoverflow.com/questions/13509277/find-a-common-string-within-a-list-of-strings) – Clint