Java String und indexOf
In Java sucht String.indexOf naiv oder mit JVM-Optimierungen. Für Lehre zählt der Algorithmus, nicht die interne Intrinsic.
Zeichen sind UTF-16 Code Units; Vorsicht bei Surrogaten in echten Unicode-Texten.
Wo gebraucht
Alltags-API in Backends. Für feste Pattern oft intrinsisch optimiert; trotzdem Komplexität und Encoding (UTF-16) kennen.
Vertiefung
String.indexOf sucht ein Zeichen oder eine Zeichenfolge ab einer optionalen Startposition. Das Ergebnis ist eine Position in der UTF-16-Darstellung von Java. Zeichen ausserhalb der Basic Multilingual Plane können aus zwei code units bestehen, weshalb Index und wahrgenommene Zeichenanzahl auseinanderfallen.
Für wiederholte Treffer muss der nächste Startindex bewusst gewählt werden. Eine Verschiebung um die Musterlänge findet nur nicht überlappende Vorkommen. Eine Verschiebung um eine Position erlaubt Überlappungen, erfordert bei leerem Suchstring aber eine gesonderte Terminierungsregel.
Schwierigkeitsstufen
- Fundpositionen mit und ohne Startargument bestimmen.
- Überlappende Vorkommen durch passende Fortschaltung erfassen.
- UTF-16-Indizes von Unicode-Codepoints unterscheiden.
Fallstricke
Ein erfolgloses Ergebnis darf nicht ungeprüft als Array- oder Stringposition verwendet werden. Ebenso führen Schleifen ohne sicheren Fortschritt bei leeren Suchstrings leicht zu Nichtterminierung.
Tasks
Card Info
- Topic: Algorithmen und Datenstrukturen
- Difficulty: Beginner
- Completed: 0 users