字符串(可以推广到数组)"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); } }