У меня есть назначение, которое требует чтения огромного файла случайных входов, например:
Adana
Izmir Adnan Menderes Apt
Addis Ababa
Aden
ADIYAMAN
ALDAN
Amman Marka Intl Airport
Adak Island
Adelaide Airport
ANURADHAPURA
Kodiak Apt
DALLAS/ADDISON
Ardabil
ANDREWS AFB
etc..
Если я укажу поисковый запрос, программа должна найти строки, в которых происходит подстрока. Например, если поисковый запрос "uradha", программа должна показывать ANURADHAPURA
. Если поисковый термин "аэропорт", программа должна показать Amman Marka Intl Airport, Adelaide Airport
Цитата из спецификаций присваивания: "Вы должны запрограммировать это приложение на эффективность, учитывая, что задействованы большие объемы данных и обработка".
Я мог бы легко достичь этой функциональности, используя цикл, но производительность будет равна O (n). Я думал об использовании trie, но, похоже, работает, только если подстрока начинается с индекса 0.
Мне было интересно, какие решения существуют, что дает производительность лучше, чем O (n)?