2017-11-16 2 views
0

sagen, ich habe einen String A B C D - ich mag mit einem List<List<String>> am Ende, welches die folgenden Kombinationen enthalten:
alle Kombinationen von Zeichenfolge durch Raum

[A,B,D,C] 
[A,B C D] 
[A B, C D] 
[A B C, D] 
[A, B C, D] 
etc... 

eine Reihe von Fragen beantwortet mit ähnlichen Anfragen gefunden, wo Leute fragten nach allen Kombinationen, die auf Teilstrings einer einzelnen Zeichenkette basierten, aber konnten sie nicht an meine Bedürfnisse anpassen.

Ay Hilfe würde sehr geschätzt werden!

+0

Hallo .. es ist keine Zuordnung - ich bin in Die Mitte eines Arbeitstages :) und kämpfen, um dies zu tun .. das ist das nächste, was ich gesehen habe: https://stackoverflow.com/questions/30169587/find-all-the-combination-of-substrings-that -add-to-the-given-Zeichenfolge – Killyz

Antwort

1

Sie können versuchen, es durch Rekursion zu tun. Haben Sie 2 Strings, links und rechts. Verschieben Sie das Zeichen ganz rechts in die richtige Zeichenfolge, wiederholen Sie es, bis nur noch ein Zeichen in der linken Zeichenfolge vorhanden ist. Immer wenn Sie dies tun, wenden Sie die gleiche Funktion auf die richtige Zeichenfolge an.

Also, wenn Sie "ABCD" haben, das gibt Ihnen:

"ABCD" 
"ABC" f("D") 
"AB" f("CD") 
"A" f("BCD") 

Völlig verausgabt Sie erhalten:

f("ABCD") { 
    "ABCD" 
    "ABC" f("D") 
     f("D") { 
      "D" 
     } 
    "AB" f("CD") 
     f("CD") { 
      "CD" 
      "C" f("D") 
       f("D") { 
        "D" 
       } 
     } 
    "A" f("BCD") 
     f("BCD") { 
      "BCD" 
      "BC" f("D") 
       f("D") { 
        "D" 
       } 
      "B" f("CD") 
       f("CD") { 
        "CD" 
        "C" f("D") 
         f("D") { 
          "D" 
         } 
       } 
     } 
} 

, die Sie gibt:

[["ABCD"], 
["ABC", "D"], 
["AB", "CD"], 
["AB", "C", "D"], 
["A", "BCD"], 
["A", "BC", "D"], 
["A", "B", "CD"], 
["A", "B", "C", "D"]] 
0

Hinweis, dass es N-1 Orte zum Einfügen von Komma. So gibt es 2 n-1 Varianten von Platzierungen, und wir können einfach alle Zahlen in Schleife mit Bereich 0..2 gehen n-1 -1 und erhalten entsprechende Kombinationen.

Zum Beispiel Wert 5 = 101 binären entspricht Komma bei den ersten und den letzten Plätzen (nach Bits gesetzt), so Kombination ist [A, B C, D]

Verwandte Themen