1 import java.util.ArrayList;
2
3 /**
4 This class generates permutations of a word.
5 */
6 public class PermutationGenerator
7 {
8 private String word;
9
10 /**
11 Constructs a permutation generator.
12 @param aWord the word to permute
13 */
14 public PermutationGenerator(String aWord)
15 {
16 word = aWord;
17 }
18
19 /**
20 Gets all permutations of a given word.
21 */
22 public ArrayList<String> getPermutations()
23 {
24 ArrayList<String> permutations = new ArrayList<String>();
25
26 // The empty string has a single permutation: itself
27 if (word.length() == 0)
28 {
29 permutations.add(word);
30 return permutations;
31 }
32
33 // Loop through all character positions
34 for (int i = 0; i < word.length(); i++)
35 {
36 // Form a simpler word by removing the ith character
37 String shorterWord = word.substring(0, i)
38 + word.substring(i + 1);
39
40 // Generate all permutations of the simpler word
41 PermutationGenerator shorterPermutationGenerator
42 = new PermutationGenerator(shorterWord);
43 ArrayList<String> shorterWordPermutations
44 = shorterPermutationGenerator.getPermutations();
45
46 // Add the removed character to the front of
47 // each permutation of the simpler word,
48 for (String s : shorterWordPermutations)
49 {
50 permutations.add(word.charAt(i) + s);
51 }
52 }
53 // Return all permutations
54 return permutations;
55 }
56 }