package day_10_1;
import java.util.*;
public class Main {
public static Set<String> stringSet = new TreeSet<>(new CompareAccordToStringLength());
public static void main(String[] args) {
getAllGroup("abc");
System.out.println(stringSet.toString());
}
public static Set<String> getAllGroup(String str){
return getAllGroupUnit(str, stringSet, 0);
}
public static Set<String> getAllGroupUnit(String str, Set<String> stringSet, int begin){
if (str.length() - 1 == begin){
stringSet.add(str.charAt(begin) + "");
}else{
Set<String> set = getAllGroupUnit(str, stringSet, begin + 1);
combineStr(set, str.charAt(begin));
stringSet.add(str.charAt(begin) + "");
}
return stringSet;
}
private static void combineStr(Set<String> stringSet, char a){
if (null != stringSet && !stringSet.isEmpty()){
ArrayList<String> strings = new ArrayList<>(stringSet);
for (String str : strings){
stringSet.add(a + str);
}
}
}
}
class CompareAccordToStringLength implements Comparator<String>{
@Override
public int compare(String o1,String o2){
if (o1.length() > o2.length()){
return 1;
}else{
if (o1.length() == o2.length()){
return o1.compareTo(o2);
}
return -1;
}
}
}