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.csdn.net/t_eel/code/detail/56218
参考:http://www.cnblogs.com/1-2-3/archive/2011/05/23/generate-permutation-part3.html