求所有划分集合

字符串(可以推广到数组)"abc",它的一个划分是由它的子字符串组成的集合,比如abc能够产生一下四个划分{a,b,c},{a,bc},{ab,c},{abc}。现在用代码生成给定字符串的划分集合。

public ArrayList<ArrayList<String>> partition(String s){
        if(s==null||s.isEmpty()){
            return null;
        }
        ArrayList<ArrayList<String>> result=new ArrayList<ArrayList<String>>();
        ArrayList<String> output=new ArrayList<String>();
        getPartition(s,0,output,result);
        return result;
    }
    
    private void getPartition(String s,int start,ArrayList<String> output,ArrayList<ArrayList<String>> result){
        if(start==s.length()){
            ArrayList<String> oneSplit=new ArrayList<String>();
            oneSplit.addAll(output);
            result.add(oneSplit);
            return;
        }
        for(int i=start;i<s.length();i++){
            output.add(s.substring(start,i+1));
            getPartition(s,i+1,output,result);
            output.remove(output.size()-1);
        }
    }

 

 

posted @ 2013-09-24 15:24  orchid  阅读(703)  评论(0编辑  收藏  举报