我有ArrayList<Integer>
。现在我需要找到这个数组中所有可能的整数排列,然后从我的排列列表中提取每个Integer。 (没有重复,每个数字只出现一次)。这就是我现在所做的事情:
for (int a : myList) {
if (a != 0 && a < 10) {
myString = myString + Integer.toString(a);
}
}
permutation(myString);
private ArrayList<String> my_permutations = new ArrayList<>();
基本上我将ArrayList
变为String
并在其上运行以下函数:
public void permutation(String str) {
permutation("", str);
}
private void permutation(String prefix, String str) {
int n = str.length();
if (n == 0) {
my_permutations.add(prefix);
} else {
for (int i = 0; i < n; i++) {
permutation(prefix + str.charAt(i), str.substring(0, i) + str.substring(i + 1, n));
}
}
}
这适用于数字1-9,但它会打破10+。有什么方法可以更好地做到这一点吗?在后一阶段,我通过循环遍历字符串并执行以下操作,逐句从Integers
中提取Strings
:
Integer.parseInt(String.valueOf(single_string.charAt(i));
因此,例如,如果我的ArrayList包含1,2,3,我将获得String&#34; 123&#34;以及以下排列:
"123"
"132"
"312"
"321"
"213"
"231"
之后我遍历每个排列并提取单个整数,所以我将从第一个获得1 2 3,从第二个获得1 3 3等等