String-Permutation
Amir
Ich habe folgenden Java-Code gefunden. Es zählt alle Permutationen eines Strings. Ich kann jedoch nicht verstehen, was es in der for-Schleife der Permutationsmethode tut. Genauer gesagt kann ich den Zweck des rem-Strings und des rekursiven Aufrufs nicht verstehen.
Gibt es dazu irgendwelche Gedanken?
Vielen Dank.
void permutaion(String str){
permutaion(str,"");
}
void permutaion(String str, String prefix){
if(str.length() == 0){
System.out.println(prefix);
} else{
for(int i=0; i < str.length(); i++){
String rem = str.substring(0,i) + str.substring(i+1);
permutaion(rem, prefix + str.charAt(i));
}
}
}
Kevin Anderson
Die Grundidee ist folgende: Um die Permutationen einer gegebenen N- Zeichenkette zu erhalten, müssen Sie:
- Nehmen Sie den ersten Buchstaben der ursprünglichen Zeichenfolge und hängen Sie alle Permutationen der verbleibenden N - 1 Zeichen an;
- Nehmen Sie die ersten beiden Buchstaben der ursprünglichen Zeichenfolge und hängen Sie alle Permutationen der verbleibenden N - 2 Zeichen an;
- Nehmen Sie die ersten drei Buchstaben der ursprünglichen Zeichenfolge und hängen Sie alle Permutationen der verbleibenden N - 3 Zeichen an ...