假设我们有一个字母表 "abcdefghiklimnop"。如何以递归的方式高效地生成该字母表中长度为五的重复排列?
我已经苦苦思索了几天,任何反馈都将是有帮助的。
本质上,这与 生成给定字符串的所有排列 相同。
然而,我只想要整个字符串中长度为五的排列。但我一直没有能够解决这个问题。
因此,对于 "abcdefghiklimnop" 中长度为 5 的所有子字符串,找到子字符串的排列。例如,如果子字符串是 abcdef,则我想要其中的所有排列,或者如果子字符串是 defli,则我想要该子字符串的所有排列。下面的代码可以给我一个字符串的所有排列,但我想用它来查找一个字符串中所有长度为 5 的子字符串的所有排列。
我已经苦苦思索了几天,任何反馈都将是有帮助的。
本质上,这与 生成给定字符串的所有排列 相同。
然而,我只想要整个字符串中长度为五的排列。但我一直没有能够解决这个问题。
因此,对于 "abcdefghiklimnop" 中长度为 5 的所有子字符串,找到子字符串的排列。例如,如果子字符串是 abcdef,则我想要其中的所有排列,或者如果子字符串是 defli,则我想要该子字符串的所有排列。下面的代码可以给我一个字符串的所有排列,但我想用它来查找一个字符串中所有长度为 5 的子字符串的所有排列。
public static void permutation(String str) {
permutation("", str);
}
private static void permutation(String prefix, String str) {
int n = str.length();
if (n == 0) System.out.println(prefix);
else {
for (int i = 0; i < n; i++)
permutation(prefix + str.charAt(i), str.substring(0, i) + str.substring(i+1, n));
}
}