Sono uno studente di scuola superiore di grado 10 che cerca di risolvere alcuni problemi in un libro di strutture e algoritmi di dati su Java.Permutazioni di stringa in Java (non ricorsivo)
Una delle domande è stampare tutte le permutazioni di una stringa.
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);
}
}
Questo è il mio tentativo. Il libro mi chiede di farlo per i caratteri "c", "a", "r", "b", "o", "n". La mia soluzione fa proprio questo, ma quando provo a usare parole di 3 o 4 lettere, mi dà ripetizioni. Se rimuovo il ciclo più esterno e provo a stamparlo, funziona con parole di 3 e 4 lettere ma non con 5+ lettere.
Sarò lieto di chiarire il mio ragionamento per questo, so che non è il più efficiente, ma tenete a mente il fatto che sono solo in grado 10 e questo è quello che mi è venuto in mente prima.
Qualcuno può aiutarmi, o almeno suggerire cosa c'è che non va? Si prega di non consigliare una soluzione ricorsiva, perché voglio lavorarci sopra iterativamente prima. Grazie, Sumit.
che dire di questo - http://stackoverflow.com/questions/11915026/permutations-of-a-string-using-iteration? –
Grazie per la risposta. Apprezzalo. Ma il problema è che non penso di poter usare StringBuilder e le funzioni di sottostringa, ecc. (Non consentito) –
si desidera eseguire la permutazione sull'array 'a' senza modificare i loop ogni volta che la dimensione di 'a' cambia? – John