设计算法打印出一串字符的全排列。假设所有的字符都不同。

来源:互联网 发布:c语言指针视频教程 编辑:程序博客网 时间:2024/06/12 14:36
import java.util.ArrayList;
import java.util.List;




public class RandomString {


public static void main(String[] args) {
String s = "abcdefg";
RandomString rs = new RandomString();
String[] create = rs.create(s);
System.out.println("总数:"+create.length);
for (String string : create) {
System.out.println(string);
}
}

private String[] create(String s) {
String[] result = null;
if(s.length() > 1){
List<String> tmp = new ArrayList<String>();
tmp.add(s.substring(0, 1));
List<String> list = ram(tmp,s,1);
result = list.toArray(new String[list.size()]);
}
return result;
}


private List<String> ram(List<String> tmp, String s, int n) {
if(n>=s.length()){
return tmp;
}
List<String> result = new ArrayList<String>();
String b = s.substring(n, n+1);
for (String str : tmp) {
result.add(b+str);
for(int i=1; i<=str.length()-1; i++){
String st = str.substring(0, i) + b + str.substring(i, str.length()); 
result.add(st);
}
result.add(str+b);
}
n++;
List<String> rs = ram(result,s,n);
return rs;
}


}
0 0