Intanto grazie per l'interesse
Lo scopo per cui sto cercando la permutazione di una stringa e' che sto
utilizzando i canali della tecnologia nio per la scrittura e la lettura su file.
Quindi ho bisogno che nell'ambiente chiamante il metodo mi restituisca
la permutazione per la successiva scrittura su file.
Riguardo l'array di interi ho risolto cosi':
codice:
package esercizi.ese_4;

import java.io.PrintStream;
import java.util.StringTokenizer;

/**
 *
 * @author mau2
 */
public class TryPermutation {    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        
        int [] numbers = {1, 2, 3, 4};
        int [][] permutazioni;
        
        permutazioni = Permutazioni.permuta( numbers );
        
        for (int i = 0; i < permutazioni.length; i++) {
            for (int j = 0; j < permutazioni[i].length; j++) {
                System.out.print(permutazioni[i][j] + " ");
            }
            System.out.println();
            
        }
        //scrittura dati su file...
        
        
    }
    
    public static class Permutazioni {
        static int [][] p;
        static int index = 0;
        public static int[][] permuta(int [] number){
            
            p = new int[factorial(number.length)][number.length];
            generaPermutazioni(number, 0);
            return p;
        }
        public static void generaPermutazioni(int[] B, int estremoinferiore) {
            int temp;
            
            // stampa permutazione attuale
            if (estremoinferiore == B.length-1) {
                for (int j = 0; j < B.length; j++){
                    if(index == 24 )
                        break;
                    p[index][j] = B[j];
                }
                index++;
            }
            
            for (int i = estremoinferiore; i < B.length; i++) {
                temp = B[estremoinferiore];
                B[estremoinferiore] = B[i];
                B[i] = temp;
                generaPermutazioni(B, estremoinferiore + 1);
                temp = B[estremoinferiore];
                B[estremoinferiore] = B[i];
                B[i] = temp;
            }
        }
        private static int factorial(int num){
            int count = 1;
            for (int i = 2; i <= num; i++) {
                count *= i;
            }
            
            return count;
        }
    }
}
Riguardo i metodi che mi hai fornito per le stringhe non fa esattamente
cio' che desidero...
La permutazione deve essere fatta sulle parole della frase, infatti nel
metodo template che ho fornito nel primo post scompone la frase in parole
utilizzando il separatore di default di StringTokenizer() ovvero lo spazio
cosi' dopo effettua la permutazioni sulle parole.
Per esempio sulla stringa "il mio gatto" la permutazione e' la seguente:
"il mio gatto"
"il gatto mio"
"mio gatto il"
"mio il gatto"
"gatto il mio"
"gatto mio il"
Cmq sul metodo da te fornito e' matematico che la permutazione da me cercate
e' un sottoinsieme delle permutazioni che il tio metodo effettua.
Rimangono 2 cose da fare una e' la restituzione, all'ambiente chiamante,
delle permutazioni e l'altro cambiare l'algoritmo.
Ora ci lavoro....