2009-12-15 4 views

ответ

3

«Замена» - это не что иное, как правильное копирование правильных (не совпадающих) подстрок, вставляя подстановку для согласованных элементов (что довольно простая задача, совершенно не зависящая от алгоритмических проблем!). Итак, если вы знаете, что KMP - лучший алгоритм поисковой подзадачи (а не как вырезанный и высушенный вопрос, как вы его представляете, в общем случае), он также будет лучше всего «заменить» (особенно если вы «заменяете», создавая новую строку, как вы это делаете на языках с неизменяемыми строками, такими как Java и Python, - но, тем не менее, даже с языком с изменяемыми строками - сначала сначала определяйте совпадения, THEN заменяет ;-).

+0

Но «заменить» не может быть сделано в O (1) без выделения дополнительных воспоминаний – user198729

+0

Невозможно выполнить поиск. –

+0

Не забывайте, что наихудшая сложность корпуса - O (KMP) * O (заменить). – user198729