Здравствуйте, watch-maker, Вы писали:
WM>Вообще, такой подход мне не нравится. Например, он может очень плохо работать в случае появления лишних символов в needle, которые с чем-нибудь там совпадут в тексте.
Поэтому я и рассказал контекст, т.к. было весьма похоже, что всю задачу можно решить одним проходом, но я как в анекдоте про "выливаем воду из чайника, и приводим задачу к известной".
WM>Всё же лучше считай сразу расстояние Дамеро-Левенштейна между полным образцом и полным текстом. Просто возьми эти граничные условия: WM>Можно начинать с любого символа из haystack — на соответсвующей стороне матрицы будут нули (а не 0,1,2,3,… как в Левенштейне);
Это легко.
WM>> Можно закончить на любом символе из haystack (а не только в углу матрицы)
Я правильно понимаю, что при поиске окончания, я отбрасываю начальную квадратную матрицу размера Needle (типа Needle должен быть прочитан весь)
А потом ищу минимум по последней строчке, расположенной вдоль Haystack.
Если матрицу нельзя отбросить, то результат (расстояние) — это угловой элемент.