Entwickler-Ecke

Sonstiges (.NET) - Gemeinsamen Teilstring finden


SyLuS - Mi 22.01.14 10:31
Titel: Gemeinsamen Teilstring finden
Hallo ihr lieben,

ich bin mal wieder auf ein Problem gestoßen und habe bisher noch keine Lösung gefunden:

Und zwar habe ich eine List<string> und möchte nun den größten gemeinsamen Teilstring in allen strings suchen.

Beispiel:

Quelltext
1:
2:
3:
Text - 001
Text - 002
Text - 003

Hier sollte das Resultat der Operation "Text - " sein.

Quelltext
1:
2:
3:
4:
5:
001: Ein weiterer Text15423
002: Ein weiterer Text15424
003: Ein weiterer Text15425
...
1999: Ein weiterer Text20009

Hier sollte das Resultat dann ": Ein weiterer Text" sein.

Habt ihr eine Idee, wie man sowas bewerkstelligen kann?
Ich könnte natürlich durch die ganzen chars iterieren und characterweise die strings vergleichen aber das erscheint mir ein wenig ineffizient.

Habt ihr eine Idee?

LG

Marc

Editiert: Fehler im eigenen Beispiel entfernt, wie peinlich

Moderiert von user profile iconTh69: C#- und Code-Tags hinzugefügt


Ralf Jansen - Mi 22.01.14 11:03

Zitat:
Hier sollte das Resultat der Opteration "Text - " sein.


Warum nicht "Text - 00"? Das wäre für mich der größte gemeinsamen Teilstring. Wenn du eine andere Interpretation von Teilstring hast solltest du die genauer erklären.


Th69 - Mi 22.01.14 11:31

Hallo SyLuS,

das Problem ist auch bekannt als Longest common substring problem [http://en.wikipedia.org/wiki/Longest_common_substring_problem] und unter Longest Common Substring Problem - Dynamic Programming (C#) [http://seesharpconcepts.blogspot.de/2012/08/longest-common-substring-problem.html] gibt es z.B. eine C#-Implementation.


SyLuS - Mi 22.01.14 17:08

@ Ralf: Ja du hast natürlich recht. Der größte meinsame Teil wäre in der Tat "Text - 00". Bin wohl gleich mal davon ausgegangen, dass sich die restlichen 0en mit entsprechender Länge der Liste dann erledigt haben ;-)

Danke für den Tipp mit dem Longest Common Substring. Das hat mir gefehlt.