public static void main(String[] args) {
// TODO Auto-generated method stub
List<string> list = quanpai("12345");
for (String string : list) {
System.out.println(string);
}
System.out.println(list.size());
}
//全排列主函数
private static List<string> quanpai(String str) {
List<string> list = new ArrayList<string>();
if(str.length() <= 1)
{
list.add(str);
}
else
{
char a = str.charAt(0);
String subStr = str.substring(1);
//得到子串的全排列
List<string> subList = quanpai(subStr);
//将第一个字符分别插入子串的全排列的每个位置
for (String string : subList) {
for (int i = 0; i <= string.length(); i++) {
String str1 = insertCharToStringAtIndex(a, string, i);
list.add(str1);
}
}
}
return list;
}
//将字符插入字符串指定位置
private static String insertCharToStringAtIndex(char ch, String str, int index)
{
String sub1 = str.substring(0, index);
String sub2 = str.substring(index);
return sub1 + ch + sub2;
}
另附一种方案:http://my.youkuaiyun.com/t_eel/code/detail/56218
参考:http://www.cnblogs.com/1-2-3/archive/2011/05/23/generate-permutation-part3.html