Advertisement

算法部分:列出所有可能的子集

阅读量:

题目描述:

生成包含n个元素的集合的所有子集。例如,对于三个元素{a,b,c}而言,其所有子集包括:{},{a},{b},{c},{a,c},{ac},{b,c},{a,b,c}.

输入:abc

输出:

cba
ba
ca
a
cb
b
c
null

解题思路:

递归方法:

  • 以集合{a,b,c}为例,若要得到它的所有子集,可以将其划分为两个部分:

  • 1.先求出集合{b,c}的所有子集(问题规模随之缩小)

  • 2.将a添加到{b,c}的所有子集中

  • 上述两部分的总和,正好构成了整个集合{a,b,c}的全部子集

复制代码
 public static List<String> subSet(String str){

    
 		List<String> list=new ArrayList<String>();
    
 		if(str.length()==0){//递归结束条件
    
 			list.add(null);//如果字符串为空,添加一个空集合
    
 			return list;
    
 		}
    
 		//获取str中,除去第一个元素后,子串的所有元素的子集
    
 		List<String> subList=subSet(str.substring(

全部评论 (0)

还没有任何评论哟~