Я не буду вдаваться в подробности проблемы, которую я пытаюсь решить, но она имеет дело с большой строкой и включает в себя поиск перекрывающихся интервалов, существующих в строке. Я могу использовать только один из интервалов, которые перекрываются, поэтому я хотел отделить эти интервалы и проанализировать их по отдельности. Мне было интересно, какой алгоритм использовать, чтобы сделать это максимально эффективно.Эффективный алгоритм для нахождения перекрытий строк
Я должен подчеркнуть, что здесь важна скорость. Мне нужно как можно быстрее отделить интервалы. Алгоритм, который пришел мне на ум, был Деревом Интервала, но я не был уверен, что это лучшее, что мы можем сделать.
Интервал Деревья могут быть запрошены в O (log n), n - количество интервалов, а для построения требуется O (nlog n) время, хотя я хотел знать, можем ли мы срубить их.
Спасибо!
Редактировать: Я знаю, вопрос неопределенный. Прошу прощения за путаницу. Я предлагаю, чтобы люди смотрели на ответ Аарона Хурана и комментарии к ним. Это должно помочь прояснить ситуацию намного больше.
Что вы имеете в виду под «перекрывающихся интервалов в строке»? –
Строка: «ThisIsATestStringToShowWhatIMeanByIntervals» Интервалы: 0-4, 5-13, 8-19, 10-12 Здесь интервалы 5-13, 8-19 и 10-12 перекрываются, и поэтому я могу использовать только один из их. – efficiencyIsBliss
Являются ли интервалы всегда отсортированными по начальной точке? – Triptych