mam zadanie, które wymaga czytania ogromny plik przypadkowych wejść, na przykład:Jak osiągnąć "dopasowanie podłańcuchów" w czasie O (n)?
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..
Gdybym podać szukaną frazę, program ma znaleźć linie którym wystąpi podciąg. Na przykład, jeśli wyszukiwanym hasłem jest "uradha", program ma pokazać ANURADHAPURA
. Jeśli wyszukiwanym hasłem jest "lotnisko", program ma pokazać: Amman Marka Intl Airport, Adelaide Airport
Cytat ze specyfikacji przypisania: "Musisz zaprogramować tę aplikację, biorąc pod uwagę efektywność, tak jak w przypadku dużych ilości danych i przetwarzania. "
Mogę łatwo osiągnąć tę funkcję za pomocą pętli, ale wydajność będzie O (n). Myślałem o użyciu trie, ale wygląda na to, że działa tylko wtedy, gdy podciąg zaczyna się od indeksu 0.
Zastanawiam się, jakie są rozwiązania, które dają lepszą wydajność niż O (n)?
Czy wszystkie linie są krótkie jak te pokazane? –
@ MichaelJ.Barber. Zasadniczo wymagania są niejasne, mam tylko przykładowy plik: http://qweop.com/test/airports.dat – Pacerier
nie potrzebujesz jak komputer kwantowy do przejrzenia listy N pozycji pod O (n)? –