Chris.Qyz
BAN USERpublic static List<String> generateAllWellOrderedString(int length) {
List<String> result = new ArrayList<String>();
if(length == 0) {
return result;
}
ArrayList<Character> characterSet = new ArrayList<Character>();
for(char c = 'a'; c <= 'z'; c++) {
characterSet.add(c);
}
for(char c = 'A'; c <= 'Z'; c++) {
characterSet.add(c);
}
for(int i = 0; i < characterSet.size(); i++) {
String prefix = Character.toString(characterSet.get(i));
result.addAll(getWellOrderedString(prefix, length - 1, characterSet));
}
return result;
}
private static List<String> getWellOrderedString(String prefix, int lengthRemaining, ArrayList<Character> characterSet) {
List<String> result = new ArrayList<String>();
if(lengthRemaining == 0) {
result.add(prefix);
return result;
}
char currentEnd = prefix.charAt(prefix.length() - 1);
for(int i = characterSet.indexOf(currentEnd) + 1; i < characterSet.size(); i++) {
String newPrefix = prefix + characterSet.get(i);
result.addAll(getWellOrderedString(newPrefix, lengthRemaining - 1, characterSet));
}
return result;
}
private static void testGenerateAllWellOrderedString() {
System.out.println("\nTest Generate All Well Ordered String:");
System.out.println("For length 1:");
List<String> result1 = generateAllWellOrderedString(1);
System.out.println(result1.size() + "\n" + result1);
System.out.println("For length 2:");
List<String> result2 = generateAllWellOrderedString(2);
System.out.println(result2.size() + "\n" + result2);
System.out.println("For length 3:");
List<String> result3 = generateAllWellOrderedString(3);
System.out.println(result3.size() + "\n");
}
- Chris.Qyz February 25, 2015