У меня есть ArrayList<Integer>
. Теперь мне нужно найти все возможные перестановки for ( int a : myList ) { if ( a ! = 0 && a < 10 ) { myString = myString + Integer . toString ( a ); } } перестановка ( myString ); private ArrayList < String > my_permutations = new ArrayList <> (); в этом массиве, а затем извлечь каждый Integer из моего списка перестановок. (Повторения нет, каждое число происходит ровно один раз). Это то, что я делаю сейчас:
ArrayList
Поэтому по существу я превращаю себя String
в a и запускаю на нем следующие функции: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)); } } }
Integers
Это отлично работает с цифрами 1-9, однако это ломается с 10+. Есть ли способ сделать это лучше? На последнем этапе я извлекаю Integers
из Strings
одного за другим, перебирая строку и выполняя:
Integer.parseInt(String.valueOf(single_string.charAt(i));
Так, например, если мой ArrayList содержит 1,2,3, я получаю строку «123» и следующие перестановки:
"123"
"132"
"312"
"321"
"213"
"231"
После этого я перебираю каждую перестановку и извлекаю отдельные целые числа, чтобы получить 1 2 3 из первого, 1 3 2 из второго и т. Д.
java,arraylist,char,integer,permutation,
У меня есть ArrayList<Integer>
. Теперь мне нужно найти все возможные перестановки for ( int a : myList ) { if ( a ! = 0 && a < 10 ) { myString = myString + Integer . toString ( a ); } } перестановка ( myString ); private ArrayList < String > my_permutations = new ArrayList <> (); в этом массиве, а затем извлечь каждый Integer из моего списка перестановок. (Повторения нет, каждое число происходит ровно один раз). Это то, что я делаю сейчас:
ArrayList
Поэтому по существу я превращаю себя String
в a и запускаю на нем следующие функции: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)); } } }
Integers
Это отлично работает с цифрами 1-9, однако это ломается с 10+. Есть ли способ сделать это лучше? На последнем этапе я извлекаю Integers
из Strings
одного за другим, перебирая строку и выполняя:
Integer.parseInt(String.valueOf(single_string.charAt(i));
Так, например, если мой ArrayList содержит 1,2,3, я получаю строку «123» и следующие перестановки:
"123"
"132"
"312"
"321"
"213"
"231"
После этого я перебираю каждую перестановку и извлекаю отдельные целые числа, чтобы получить 1 2 3 из первого, 1 3 2 из второго и т. Д.
01Java, ArrayList, символ, целое число, перестановка,