У меня есть два файла (f1 и f2), содержащие текст (или двоичные данные). Как я могу быстро найти общие блоки?
, например f1: ABC DEF f2: XXABC XEF
выход:
общие блоки: длина 4: «ABC» в f1 @ 0 и f2 @ 2 длина 2: «EF» в f1 @ 5 и f2 @ 8
Это отличный инструмент для таких целей. http://sourceforge.net/projects/duplo/
Проект PMD с открытым исходным кодом имеет модуль детектора вырезания и вставки, который упоминается на этой странице: http://pmd.sourceforge.net/integrations.html.
В Википедии есть некоторый псевдокод для поиска самой длинной общей подстроки между двумя последовательностями данных. В вашем случае вы просто извлекаете из таблицы все общие подстроки, которые не являются префиксами других общих подстрок (т.е. максимальных общих подстрок).