Учитывая кучу строк мне нужно, чтобы найти те, которые соответствуют 3 виду моделей: поискпоиска строк, соответствующих шаблон «а: *: хуг» меньше, чем O (N)
- Префикса - а *
- Glob-подобный узор - а: *: хуг поиск
- суффикса - * хуг
где * является подстановочным (и может обозначать любое количество символов).
Теперь прямолинейное решение - это просто сканировать каждую строку и посмотреть, соответствует ли она целевому шаблону. Но это O (n). Если бы я сохранил строки в сбалансированном дереве поиска, я могу делать префиксные запросы в O (log n). Если бы я создал еще одно дерево со всеми строками, существенно изменившимися, я могу выполнить суффиксные запросы в O (log n). Есть ли умный способ эффективного поиска шаблонов «abc: *: xyz»?
Если у вас есть решение для первого и последнего случая, тогда у вас есть решение для среднего случая. Почему имеет значение, что такое средние фигуры? Просто примените первое решение, затем последнее, и если они оба будут работать, вы сравните средний случай. Это также O (1) (если вы используете «строки pascal», которые все, кроме C-like do) – Pod
@Pod, это может быть O (1) для данной строки, но N - количество строк , следовательно, O (N). – paxdiablo