Estou quebrando a cabeça pra enteder como um programa que faz a permutação de String funciona alguém pode me explicar vo deixar o código logo abaixo
import java.util.Scanner;
public class PermutationTest
{
public static void main( String args[] )
{
Scanner scanner = new Scanner( System.in );
Permutation permutationObject = new Permutation();
System.out.print( "Enter a string: " );
String input = scanner.nextLine(); // recupera String a permutar
// permuta String
permutationObject.permuteString( "", input );
} // fim de main
} // fim da classe PermutationTest
public class Permutation
{
// declaração recursiva do método permuteString
public void permuteString(
String beginningString, String endingString )
{
// caso básico: se string a permutar tiver comprimento menor que ou igual a
// 1, exibe apenas essa string concatenada com beginningString
if ( endingString.length() <= 1 )
System.out.println( beginningString + endingString );
else // passo de recursão: permuta endingString
{
// para cada caractere em endingString
for ( int i = 0; i < endingString.length(); i++ )
{
try
{
// cria nova string para permutar eliminando o
// caractere no índice i
String newString = endingString.substring( 0, i ) +
endingString.substring( i + 1 );
// chamada recursiva com uma nova string a ser permutada
// e uma string inicial a ser concatenada, que
// inclui o caractere no índice i
permuteString( beginningString +
endingString.charAt( i ), newString );
} // fim do try
catch ( StringIndexOutOfBoundsException exception )
{
exception.printStackTrace();
} // fim do catch
} // for final
} // fim de else
} // fim do método permuteString
} // fim da classe Permutation