Questo è scritto in Java:
Codice:
public String[] palyndromes (String word)
{
if (word.length () == 0)
return new String[0];
String[] result = new String[factorial (word.length ())];
String front = "", rear = word;
char ch;
int i = 0;
while (front.length () != word.length ())
{
ch = rear.charAt (i);
rear = rear.substring (1);
String[] support = new String[rear.length ()];
support = palyndromes (front + rear);
for (int j = 0; j < support.length; j++)
result[i * support.length + j] = ch + support[j];
front = front + ch;
}
return result;
}
private int factorial (n) { int fact = 1; for (int i = 0; i < n; i++) fact *= i; return fact; }
E' un po' improvvisato, quindi non ti garantisco che funzioni... di sicuro, però, in caso di caratteri duplicati troverai ripetizioni di palindromi...
Ah, avrai capito che i possibili anagrammi di una stringa di n caratteri sono esattamente n! (salvo ripetizioni)... quindi non ti sorprendere se insorgono problemi di memoria quando lavori anche con stringhe piuttosto piccole (anche solo 7-8 caratteri)...
Stammi bene...