1.已知{"ab","cd","efg"},给出你的算法,可以得到如下结果
{ace,acf,acg,ade,adf,adg,bce,bcf,bcg,bde,bdf,bdg}
假设f(i)是第i个字符串的排列之后的结果,f(i+1)=f(i)*str(i+1)即前i个字符串排列的结果和第i+1个字符串的每个字母排列组合。注意初始化条件。
public String[] stringRes(String[] str){
return getResult(str,str.length);
}
public String[] getResult(String[] str,int n) {
if(n==1){
String s=str[0];
String[] res=new String[s.length()];
for(int i=0;i<s.length();i++){
res[i]=Character.toString(s.charAt(i));
}
return res;
}
String[] res1=getResult(str,n-1);
String s=str[n-1];
String[] res2=new String[s.length()];
for(int i=0;i<s.length();i++){
res2[i]=Character.toString(s.charAt(i));
}
String[] resStr=new String[res1.length*res2.length];
int l=0;
for(int j=0;j<res1.length;j++){
for(int k=0;k<res2.length;k++){
resStr[l++]=res1[j].concat(res2[k]);
}
}
return resStr;
}