Я разгадываю загадку, и у меня есть несколько кусочков большой числовой строки c. Первоначально они казались случайными, но через некоторый частотный анализ я узнал, что все они являются кусочками большой строки.
Проблема в том, что эти кусочки могут содержать отдельные части большой строки, но не содержат информацию о том, где они расположены и могут содержать даже отдельные подстроки. Например:
text: 0102030405060708091011121314151617181920
slice 1: 010203041516171819
slice 2: 030405060717181920
slice 3: 060708091011121314
slice 4: 040506071213141516
Обратите внимание, что, сдвинув слайсы, я могу восстановить исходный текст:
slice 1: 01020304 1516171819
slice 2: 0304050607 17181920
slice 3: 060708091011121314
slice 4: 04050607 1213141516
Поскольку исходный текст может состоять из сотен или даже тысяч цифр, выполнение этого вручную очень тяжело и отнимает много времени. У меня есть коллекция из 80 фрагментов, и они должны создать объединенную строку, которая является исходным текстом, которого у меня нет.
Я искал некоторые алгоритмы сопоставления строк, такие как самая длинная общая подстрока, но они не покройте разделение ломтиков, чтобы попробовать и соответствовать. Кроме того, алгоритмы сравнения, как правило, не поддерживают слияние нескольких строк одновременно, и два среза содержат слишком мало общего, чтобы это было полезно, обычно давая ложные совпадения, которые в будущем не удаются.