String-Collection: längste gemeinsame Strings / Prefixe

YelloW

Neues Mitglied
Hi,

ich habe eine Collection von Strings (Dateipfade) und muss daraus die längsten gemeinsamen Pfade ALLER Strings ermitteln.

Beispiel:
["e:/users/test", "e:/users/test/abc/", "c:/programs", "e:/data", "/test"]

Das Ergebnis muss dann sein:
["e:/", "c:/programs", "/test"]

Ich hab leider keine Ahnung wie ich das realisieren kann...

danke schon mal für Antworten,
viele Grüße, Flo
 
Zuletzt bearbeitet:
Nicht mal einen Ansatz?

Ich würde dazu eine doppelte for-Schleife verwenden (source Collection und Ergebnis Collection).
Dann einfach kontrollieren gibt es in der Ergebnis Collection schon einen Pfad der mit diesem Laufwerksbuchstaben beginnt, wenn nein einfach Pfad zur Collection hinzufügen.
Ansonsten vergleichen, und den Pfad soweit kürzen bis "startsWith" zutrifft, den alten aus der Ergebnis Collection löschen und den neuen (gekürzten) hinzufügen.
 
bitte nicht auf Laufwerksbuchstaben versteifen. Die gibt es nicht zwingend. Es kann sich hier auch um Partitionen oder Mounts bei Linux handeln, da gibts keine Buchstaben.
deswegen auch das Beispiel mit "/test"

bei "c:/programs" und "c:/programs/test" sollte das Ergebnis auch "c:/programs" sein und nicht "c:/"
 
Ja ich weiß, ich es ging mir generell nur mal darum dir einen möglichen Ansatz nahe zu bringen.
Dafür einfach mal auf die Windows Variante setzen mit Laufwerksbuchstaben, wenn das funktioniert kann man es noch anpassen für absolute/relative Pfade.

Du sollst auch nicht nur den Laufwerksbuchstaben in die Ergebnis Collection reingeben sondern einfach den 1.Pfad zu einem Laufwerksbuchstaben, danach vergleichst du alle weiteren Pfade mit diesem.
Entweder ist der Pfad länger (tiefer in den Ordnern) oder ab einer bestimmten Ordner Ebene wird anders verzweigt, dann wäre die Gemeinsamkeit der beiden Pfade der neue Wert für die Ergebnis Collection (alten entfernen)
 

Neue Themen


Zurück
Oben