У меня есть HTML/CSS/JavaScript с мучительно длинными именами классов, id, переменных и функций и другими комбинированными строками, которые используются снова и снова. Возможно, я мог бы переименовать или перестроить несколько из них и сократить текст пополам.Найти самые длинные повторяющиеся строки?
Итак, я ищу простой алгоритм, который сообщает о самых длинных повторяющихся строках в тексте. В идеале, это приведет к обратному сортировке по длине экземпляров, чтобы выделить строки, которые, если переименовать глобально, принесут наибольшую экономию.
Это похоже на то, что я мог бы сделать больно в 100 строках кода, для которых есть несколько изящных 10-строчных рекурсивных регулярных выражений. Это также звучит как домашняя проблема, но я уверяю вас, что это не так.
Я работаю на PHP, но мне будет приятно видеть что-то на любом языке.
ПРИМЕЧАНИЕ. Я не ищу нигде HTML/CSS/JavaScript как таковой. Мне нравится содержательный текст, поэтому я хочу сделать это вручную и взвешивать разборчивость против раздувания.
Как о примере? – Gumbo
Метод грубой силы должен начинаться с позиции 0 и тестировать, если 0-1 - повторяющаяся строка. Если да, введите шаблон в массив, сколько раз оно повторяется. Затем попробуйте 0-2, 0-3 и т. Д. Как только шаблон не будет повторяться, переместите начальную позицию и сделайте 1-2 и т. Д. Пока вы делаете это или после того, как выбрасываете те, которые ничего не добавляют (например, если и hotdog и hot повторяются 10 раз, вы только держите хот-дог). Blech. – LibraryThingTim
Пример: Синий слон любил есть хот-доги на солнце. Пингвину нравилось лежать на солнце с синим слоном. синий слон x 2 на солнце x 2 enjoy x 2 – LibraryThingTim