问题:编写一个函数,写出一个字符串的非空子集。
解答:对于一个字符串中的每个字符都只有选与不选两种情况,每次需要选择i个字符组成字串,如果选则剩下有需要选择i-1个元素,如果不选则剩下需要选择i个元素。结束条件为i个元素选择完毕。
public static void run(String string){
ArrayList<String> list = new ArrayList<>();
for(int i = 1;i<=string.length();i++){
getallsort(string,i,list);
}
}
private static void getallsort(String string, int i, ArrayList<String> list) {
//循环结束条件
if(i==0){
for(String a:list){
System.out.print(a);
}
System.out.println();
return;
}
if(string.length()!=0){
list.add(string.charAt(0)+"");
getallsort(string.substring(1, string.length()),i-1,list);
list.remove(list.size()-1);
getallsort(string.substring(1, string.length()), i, list);
}
}