Diese Frage bezieht sich nur auf den Algorithmus. In Pseudo-Code ist wie folgt:Schnellster Algorithmus zum Suchen einer Zeichenfolge in einem String-Array?
A = Array of strings; //let's say count(A) = N
S = String to find; //let's say length(S) = M
for (Index=0; Index<count(A); Index++)
if (A[Index]==S) {
print "First occurrence at index\x20"+Index;
break;
}
Dies erfordert für die Schleife N mal String-Vergleich (oder Byte-Vergleich N * M-mal, O (N * M)). Dies ist schlecht, wenn Array A viele Elemente enthält oder wenn String S zu lang ist.
Gibt es eine bessere Methode, um das erste Auftreten herauszufinden? Ein Algorithmus bei O (K * logK) ist OK, aber vorzugsweise bei O (K) oder am besten bei O (logK), wobei K entweder N oder M ist. Es macht mir nichts aus, andere Strukturen hinzuzufügen oder eine Datenverarbeitung vor der Vergleichsschleife durchführen.
"Wenn String S ist zu lang" ist irrelevant, es sei denn, es gibt viele Strings in 'A 'mit der gleichen Länge und einem identischen langen Präfix. (String-Gleichheitsprüfungen können sofort beendet werden, wenn die Längen unterschiedlich sind oder sobald eine Abweichung gefunden wird.) – Dougal
Warum verwenden Sie '\ x20' anstelle eines Leerzeichens? Ich bin neugierig :-) –
oh ja, die Vergleichszeit hängt mehr von den Längen der Strings in Array A – jondinham