我有一个整数数组,需要使用 Java 找到这些元素的所有可能排列。所以我将在最后有一个包含数组的数组,其中每个数组都是原始单个数组的排列。它必须适用于任何大小的数组。
我可以为字符串执行此操作,但数组让我绊倒了。我的元素是整数,所以我不能使用简单的字符串方法,例如,如果我的整数是 1、2、14,我将置换字符串 1214。是否可以操作字符串并置换它,然后得到最后通过某种方式过滤我所需的排列?
我环顾四周,似乎找到了一些算法,但实际上所有这些都只是大量代码,几乎没有解释,所以我无法理解它们。有没有人有一个算法,一个解释过的算法!?
这是我的字符串算法:
static String[] getPermutations( String str ) {
List<String> perms = new ArrayList<>();
permute( "", str, perms );
String[] list = perms.toArray( new String[ perms.size() ] );
return list;
}
// This function recursively calls itself
static void permute( String prefix, String str, List<String> perms ) {
int n = str.length();
if ( n == 0 ) {
perms.add(prefix);
} else {
for ( int i = 0; i < n; i++ ) {
permute( prefix + str.charAt(i), str.substring(0, i) + str.substring(i+1, n), perms );
}
}
}