String-Permutationen in Java (nicht rekursiv)
Ich bin ein Schüler der 10. Klasse, der versucht, einige Probleme in einem Buch über Datenstrukturen und Algorithmen auf Java zu lösen.
Eine der Fragen besteht darin, alle Permutationen eines Strings zu drucken.
class C14
{
public static void main(char a[])
{
// char[] a = {'c','a','r','b','o','n'};
int c=0,w=0;
for(int q = 0;q<a.length;q++)
{
for(int i=0;i<a.length;i++)
{
for(int j=1;j<a.length;j++)
{
for(int k=1;k<a.length-1;k++)
{
for(int z=0;z<a.length;z++)
{
System.out.print(a[z]);
c++;
}
w++;
System.out.println();
char p=a[k+1];
a[k+1]=a[k];
a[k]=p;
}
System.out.println();
}
System.out.println();
char x=a[0];
a[0]=a[1];
a[1]=x;
}
}
System.out.println(" Character count = " + c);
System.out.println(" Word count = " + w);
}
}
Das ist mein Versuch. Das Buch fordert mich auf, dies für die Zeichen "c", "a", "r", "b", "o", "n" zu tun. Meine Lösung macht genau das, aber wenn ich versuche, Wörter mit 3 oder 4 Buchstaben zu verwenden, gibt es mir Wiederholungen. Wenn ich die äußerste Schleife entferne und versuche, sie zu drucken, funktioniert sie für Wörter mit 3 und 4 Buchstaben, jedoch nicht für Wörter mit 5 oder mehr Buchstaben.
Gerne kläre ich meine Argumentation dafür, ich weiß, dass es nicht die effizienteste ist, aber bedenke, dass ich nur in der 10. Klasse bin und dies ist, woran ich zuerst dachte.
Kann mir bitte jemand weiterhelfen oder zumindest einen Hinweis geben, was nicht stimmt? Bitte raten Sie von einer rekursiven Lösung ab, da ich diese zunächst iterativ durcharbeiten möchte. Danke, Sumit.