看到这类问题,就要想到用递归进行解决!类似: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(String word, char c, int i) {
String start = word.substring(0, i);
String end = word.substring(i);
return start+c+end;
}
public stat

本文通过递归算法详细探讨如何找出一个字符串的所有排列组合。通过将一个字符插入到已排列字符的不同位置,实现从n-1个字符到n个字符的排列扩展。示例代码展示了如何实现这一过程。
最低0.47元/天 解锁文章
2093

被折叠的 条评论
为什么被折叠?



