Auf Anhieb fällt mir nur das naive Vorgehen ein:
- Suche das erste Zeichen des zweiten Strings im ersten Strings (also im Beispiel "H")
- Überprüfe, ob ab dieser Stelle der Rest des ersten Strings mit dem Anfang des zweiten übereinstimmt
- Falls nicht, suche das nächste Vorkommen des ersten Zeichens im zweiten Strings. (*)
- Falls ja, hat man die Überlappung gefunden und kann die Strings zusammenbauen
(*) diese Stelle kann man ggf. beschleunigen, wenn man ähnliche Tricks anwendet wie bei Knuth-Morris-Pratt. Damit sollte man dann auf eine lineare Worst-Case-Laufzeit kommen, die so erstmal nicht garantiert ist.
The angels have the phone box.