Я хочу сопоставить имена файлов, как Colibri . Я пытался решить это с помощью регулярных выражений.
Поиск в Colibri работает так, что вы вводите символы по порядку внутри имени файла, и он находит все файлы с этими символами по порядку в имени файла. Например, для «ab» он находит «cabal», «ab» и «achab».
Простая вставка .*
между буквами работает (поэтому искомая строка "ab" становится регулярным выражением .*a.*b.*
), но я хочу сделать это для большого количества файлов.
Пока у меня есть O (N * ???), где N - количество имен файлов и ??? в лучшем случае линейная сложность (я предполагаю, что мой язык использует NFA). Меня не волнует космическая сложность. Какие структуры данных или алгоритмы я должен выбрать, чтобы сделать его более эффективным (с точки зрения временной сложности)?