Дерево суффиксов лучше, если вам придется отвечать на множество вопросов, таких как «присутствует ли иголка в стоге сена?». KMP лучше, если вам нужно только искать одну строку в другой отдельной строке и не делать это много раз.
Дерево суффиксов - это гораздо более общая структура данных, поэтому вы можете сделать с ней гораздо больше. Посмотрите, что вы можете сделать с этим здесь . KMP полезен для поиска, является ли строка подстрокой в другой строке.
Вы также можете проверить другие алгоритмы, такие как Бойер-Мур , Рабин-Карп и даже наивный алгоритм, поскольку существуют ситуации (входы), в которых один лучше других.
Итог:
- Если у вас много запросов, подобных тому, который я упомянул выше, стоит создать дерево суффиксов, а затем быстрее отвечать на каждый запрос.
- Если вам нужно выполнить больше, чем такие запросы, стоит также создать дерево суффиксов.
- Если вам нужно только время от времени находить, является ли строка подстрокой другой строки, используйте KMP.