Я работал в python, и я нашел эту библиотеку под названием itertools
. Это очень полезно для проблем, с которыми вы столкнулись на соревнованиях. Однако только одно из трех соревнований, которое я собираюсь принять на python. Все они поддерживают главным образом java и другие языки c-стиля c.Java-эквивалент для этого кода на Python
Anyways Я написал этот код в python и хочу перевести его в java.
import itertools
array = [''.join(x) for x in itertools.permutations(input("Enter a word: "))]
print(",".join(array).replace(",", "\n"))
Это напечатает все перестановки слова, которые являются длиной слова.
Примеры: привет ---> привет, Ih
Foo ---> Foo, Foo, OFO, уф, OFO, уф
(Да, есть дублируют игнорировать их при ответе)
Теперь я в курсе этого кода Java, который похож на то, что я сделал (не беспокоить рассматривать его. Просто знаю, что это делает ту же задачу)
public class Permutations {
// print N! permutation of the characters of the string s (in order)
public static void perm1(String s) { perm1("", s); }
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));
}
}
// print N! permutation of the elements of array a (not in order)
public static void perm2(String s) {
int N = s.length();
char[] a = new char[N];
for (int i = 0; i < N; i++)
a[i] = s.charAt(i);
perm2(a, N);
}
private static void perm2(char[] a, int n) {
if (n == 1) {
System.out.println(a);
return;
}
for (int i = 0; i < n; i++) {
swap(a, i, n-1);
perm2(a, n-1);
swap(a, i, n-1);
}
}
// swap the characters at indices i and j
private static void swap(char[] a, int i, int j) {
char c;
c = a[i]; a[i] = a[j]; a[j] = c;
}
public static void main(String[] args) {
int N = Integer.parseInt(args[0]);
String alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
String elements = alphabet.substring(0, N);
perm1(elements);
System.out.println();
perm2(elements);
}
}
Теперь, когда я закончил соревнование, я бы предпочел использовать мой 3-уровневый код, который был против этого, но я не могу из-за ограничений. Кто-нибудь знает библиотеку в java, которая похожа на python's itertools
?
Даже если есть, почему конкуренция позволит вам ссылаться на произвольные библиотеки? – Phylogenesis
Несомненно, использование множества разных библиотек выходит за рамки большинства правил конкуренции? Во всяком случае, [itertools] (https://docs.python.org/2/library/itertools.html) является частью стандартной библиотеки python. Я не знаю эквивалент стандартной библиотеки Java. – will
В конкурсах, в которых я участвую, использование стандартной библиотеки является законным. Например, я использовал такие вещи, как 'StringBuilder', чтобы проверять наличие палиндромов в конкурсе. – JGerulskis