/**
* 功能:确定某字符串的所有排列组合。
*/
注意:不考虑重复字符。若考虑重复字符,只需在加入permulations时去掉重复的字符串即可。
/** * 思路:元素由少到多,将新的元素塞进所有字符串中间的任意可能位置。 * @param str * @return */ public static ArrayList<String> getPerms(String str){ if(str==null) return null; ArrayList<String> permutations=new ArrayList<String>(); if(str.length()==0){ permutations.add(""); return permutations; } char first=str.charAt(0); String remainder=str.substring(1); ArrayList<String> words=getPerms(remainder); for(String word:words){ for(int i=0;i<=word.length();i++){ String s=insertCharAt(word, first, i); permutations.add(s); } } return permutations; } public static String insertCharAt(String word,char c,int i){ String start=word.substring(0, i); String end=word.substring(i); return start+c+end; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-21 10:38:09