getman.sergei
BAN USERimport java.util.*;
public class CombinationGenerator {
public static Comparator<String> stringComparator
= new Comparator<String>() {
@Override
public int compare(String s, String s2) {
if(s.length() > s2.length()) {
return 1;
} else if (s.length() == s2.length()) {
return s.compareTo(s2);
} else {
return -1;
}
}
};
public String [] combine(String [] basic) {
Set<String> combinations
= new TreeSet<String>(stringComparator);
for (int i = 0; i < basic.length; i++){
for (int j = 0; j < basic.length; j++){
String letter = basic[j];
if (!combinations.contains(letter)) {
combinations.add(letter);
} else {
combinations.addAll(combineWith(letter,
combinations));
}
}
}
return combinations.toArray(new String[0]);
}
public List<String> combineWith(String letter,
Set<String> combinations) {
List<String> buffer = new ArrayList<String>();
for (String element : combinations){
if(!element.contains(letter)) {
for (int i = 0; i <= element.toCharArray().length; i++) {
StringBuilder elementBuilder
= new StringBuilder(element);
elementBuilder.insert(i, letter);
buffer.add(elementBuilder.toString());
}
}
}
return buffer;
}
public static void main(String [] args){
for(String element: new CombinationGenerator()
.combine(new String[]{"a", "b", "c"})) {
System.out.println(element);
}
}
}
- getman.sergei August 26, 2015