看到这类问题,就要想到用递归进行解决!类似:compute all, get nth, the first n.....
字符串的排列问题:一个含有n个字符的字符串,求排列,用递归思路来进行考虑,假设已经得到getPerms(n-1),求getPerms(n);
已经得到n-1个字符的排列,求n个字符的排列,只有将额外的那个字符插入到已经得到的n-1的字符的所有排列的所有可能位置。
代码如下:
public class PermutationOfString {
public static ArrayList<String> getPerms(String s){
ArrayList<String> perms = new ArrayList<String>();
if(s==null){
return null;
}else if(s.length() == 0){
perms.add("");
return perms;
}
char t = s.charAt(0);
String remainder = s.substring(1);
ArrayList<String> subperms = getPerms(remainder);
for(String item:subperms){
for(int i=0;i<=item.length();i++){
String newString = insertCharAt(item,t,i);
perms.add(newString);
}
}
return perms;
}
public static String insertCharAt(Stri