Я искал способ перестановки слова в java и натолкнулся на этот код. Я действительно изучаю его сам и сталкиваюсь с некоторыми трудностями в понимании некоторых частей кода:Перспективные буквы слова - Требуется уточнение
Во-первых, какая именно переменная:
used = new boolean[ in .length()]
? Я никогда не видел такого объявления логической переменной.Какова основная логика функционирования этого фрагмента?
для (INT I = 0; я < в .length(); ++ я) { , если (используется [я]) { продолжить; } out.append (in .charAt (i)); используется [i] = true; Перестановочить(); используется [i] = false; out.setLength (out.length() - 1);
Изначально программа
public class Permutations {
boolean[] used;
StringBuffer out = new StringBuffer();
String in ;
public Permutations(String str) { in = str;
used = new boolean[ in .length()];
}
public void permute() {
if (out.length() == in .length()) {
System.out.println(out);
return;
}
for (int i = 0; i < in .length(); ++i) {
if (used[i]) {
continue;
}
out.append(in .charAt(i));
used[i] = true;
permute();
used[i] = false;
out.setLength(out.length() - 1);
}
}
}
Один вопрос на вопрос –
Не более половины этого вопроса является дубликатом упомянутого вопроса, и даже тогда эта часть содержит объявление *, а не * инициализацию *. –
@JarrodRoberson я так не думаю. –