我想一次生成一组 n 件事情的所有可能团队,例如 "abcd" = ab,ac,ad... 没有重复。我已经写了这个,但它会生成一个字符串的所有排列。我写了一个方法来检查两个字符串是否有相同的字符,但我不知道这是否是正确的方法。
package recursion;
import java.util.Arrays;
public class Permutations2 {
public static void main(String[] args) {
perm1("", "abcd");
System.out.println(sameChars("kostas","kstosa"));
}
private static void perm1(String prefix, String s) {
int N = s.length();
if (N == 0){
System.out.println(prefix);
}
else {
for (int i = 0; i < N; i++) {
perm1(prefix + s.charAt(i), s.substring(0, i) + s.substring(i+1, N));
}
}
}
private static boolean sameChars(String firstStr, String secondStr) {
char[] first = firstStr.toCharArray();
char[] second = secondStr.toCharArray();
Arrays.sort(first);
Arrays.sort(second);
return Arrays.equals(first, second);
}
}