| 

.NET C# Java Javascript Exception

1
Hallo Zusammen,

ich würde gerne Leerzeichen in einer vorgegebenen Zeichenkette einfügen ohne die Reihenfolge der Zeichen zu ändern, nur die Positionen der Leerzeichen zwischen Zeichen.

Eine Permutation aller möglichen Leerzeichenstellen soll ausgegeben werden.

Beispiel:
Eingabe:
abcd


Ausgabe:
(Leerzeichen hier als "." dargestellt)

a.bcd
ab.cd
abc.d
abcd.

a.b.cd
a.bc.d
a.bcd.

ab.c.d
ab.cd.

abc.d.

a.b.c.d
ab.c.d.

a.b.c.d.

Ich hoffe ich habe keine Kombination in meinem Beispiel übersehen! :D

Wie kann man sowas machen?

DANKE für Eure Hilfe!
29.05.2018
DaTaBeRt 416 1 7
2 Antworten
0
Ich habe nun selbst eine Lösung gefunden!
29.05.2018
DaTaBeRt 416 1 7
Es ist bestimmt nur eine Kleinigkeit die ich hier übersehe :)
DaTaBeRt 29.05.2018
0
So ich habe es doch selber hinbekommen :D

Für alle die auch so eine Funktion mal brauchen können hier mein Code:
import java.util.*;

public class test {
static List<String> permutationen = new ArrayList<String>();
static String eingabe;

public static void main(String[] args) {
eingabe = new String ("abcd");
permutationen.add(eingabe);

space_permutation ();
}

static void space_permutation () {
for (int j = 0; permutationen.get(j).length() != 2 * eingabe.length(); j++) {
for (int i = 0; i < permutationen.get(j).length(); i++) {
String out = permutationen.get(j).substring(0, i + 1) + "."
+ permutationen.get(j).substring(i + 1, permutationen.get(j).length());
if (!out.contains("..") && !permutationen.contains(out)) {
permutationen.add(out);
System.out.println(out);
}
}
}
}


Und das ist die Ausgabe von meiner Test-Zeichenkette abcd :
abcd
a.bcd
ab.cd
abc.d
abcd.
a.b.cd
a.bc.d
a.bcd.
ab.c.d
ab.cd.
abc.d.
a.b.c.d
a.b.cd.
a.bc.d.
ab.c.d.
a.b.c.d.


Ich hoffe das ist auch für andere noch nützlich ;)
30.05.2018
DaTaBeRt 416 1 7
Ich habe jetzt doch noch ein Problem gefunden: Bis zu einer Zeichenkette von 8 Zeichen funktioniert es wunderbar aber sobald ich das 9te zeichen hinzufüge bekomme ich ein stackOverflowError! :(
DaTaBeRt 30.05.2018
Hab nun die StackSize erhöht nun klappts!
http://www.cs.uvm.edu/~xwu/cs124/HowtoIncreaseStackMemorySizeEclipse.pdf
DaTaBeRt 30.05.2018
So ich hab den Code nochmal editiert und mit 2 verschachtelten For-Schleifen realisiert. So ist es übersichtlicher und läuft besser (weniger Speicherintensiv) als mit rekursiven Aufrufen wie es zuvor war.
DaTaBeRt 01.06.2018

Stelle deine Java-Frage jetzt!