Implementierung: naive Suche
Implementiere die naive Suche und gib den ersten Index oder -1 zurück.
Wo gebraucht
Referenzimplementierung zum Messen gegen JDK und gegen KMP. Nützlich, um Optimierungen zu begründen statt zu raten.
Vertiefung
Eine direkte Implementierung verwendet eine äussere Schleife über Startpositionen und eine innere Schleife über Musterzeichen. Die Invariante der inneren Schleife lautet: Vor Vergleich j stimmen die ersten j Musterzeichen mit dem Textausschnitt überein.
Ist j gleich der Musterlänge, wurde ein vollständiger Treffer gefunden. Der leere Suchstring kann konsistent an Position null gelten. Ist das Muster länger als der Text, existiert keine zulässige Ausrichtung und die äussere Schleife wird nicht betreten.
Schwierigkeitsstufen
- Schleifengrenzen für Text- und Musterlänge setzen.
- Die innere Schleifeninvariante zur Korrektheit verwenden.
- Alle Treffer einschliesslich Überlappungen sammeln.
Fallstricke
Der Ausdruck text[i + j] benötigt die durch die äussere Grenze garantierte Sicherheit. Ein Abbruch beim ersten ungleichen Zeichen darf nicht versehentlich die gesamte Suche statt nur die aktuelle Ausrichtung beenden.
Tasks
Card Info
- Topic: Algorithmen und Datenstrukturen
- Difficulty: Intermediate
- Completed: 0 users