Permutações de strings em Java (não recursivas)
Eu sou um estudante do ensino médio da 10ª série tentando resolver alguns problemas em um livro sobre Estruturas de Dados e Algoritmos em Java.
Uma das questões é imprimir todas as permutações de uma string.
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);
}
}
Esta é minha tentativa. O livro pede que eu faça para os caracteres 'c', 'a', 'r', 'b', 'o', 'n'. Minha solução faz exatamente isso, mas quando tento usar palavras de 3 ou 4 letras, isso me dá repetições. Se eu remover o loop externo e tentar imprimi-lo, ele funcionará para palavras de 3 e 4 letras, mas não para palavras de 5 ou mais letras.
Ficarei feliz em esclarecer meu raciocínio, sei que não é o mais eficiente, mas tenha em mente o fato de que estou apenas no 10º ano e é isso que veio à minha mente primeiro.
Alguém pode me ajudar, ou pelo menos sugerir o que há de errado? Por favor, não recomende uma solução recursiva, porque eu quero trabalhar iterativamente primeiro. Obrigado, Sumit.