Jak mogę wyświetlić wszystkie permutacje wielkich/małych liter dla dowolnej litery określonej w tablicy znaków? Powiedzmy, że mam tablicę takich znaków jak: ['h', 'e', 'l', 'l', 'o'] i chciałem wydrukować możliwe kombinacje dla powiedzenia litery "l" więc wydrukuje [helo, heLlo, heLLo, helLo].Określona permutacja elementów w tablicy znaków w języku JAVA?
To jest to, co do tej pory miałem (jedynym problemem jest to, że mogę wydrukować permutacje, ale nie jestem w stanie wydrukować ich wewnątrz rzeczywistego słowa, więc mój kod wypisuje [ll, lL, LL, LL] zamiast z powyższego przykładu
mój kod:...
import java.util.ArrayList;
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
//Sample Word
String word = "Tomorrow-Today";
//Sample Letters for permutation
String rule_char_set = "tw";
ArrayList<Character> test1 = lettersFound(word, rule_char_set);
printPermutations(test1);
}
public static void printPermutations(ArrayList<Character> arrayList) {
char[] chars = new char[arrayList.size()];
int charIterator = 0;
for(int i=0; i<arrayList.size(); i++){
chars[i] = arrayList.get(i);
}
for (int i = 0, n = (int) Math.pow(2, chars.length); i < n; i++) {
char[] permutation = new char[chars.length];
for (int j =0; j < chars.length; j++) {
permutation[j] = (isBitSet(i, j)) ? Character.toUpperCase(chars[j]) : chars[j];
}
System.out.println(permutation);
}
}
public static boolean isBitSet(int n, int offset) {
return (n >> offset & 1) != 0;
}
public static ArrayList<Character> lettersFound(String word, String rule_char_set) {
//Convert the two parameter strings to two character arrays
char[] wordArray = word.toLowerCase().toCharArray();
char[] rule_char_setArray = rule_char_set.toLowerCase().toCharArray();
//ArrayList to hold found characters;
ArrayList<Character> found = new ArrayList<Character>();
//Increments the found ArrayList that stores the existent values.
int foundCounter = 0;
for (int i = 0; i < rule_char_setArray.length; i++) {
for (int k = 0; k < wordArray.length; k++) {
if (rule_char_setArray[i] == wordArray[k]) {
found.add(foundCounter, rule_char_setArray[i]);
foundCounter++;
}
}
}
//Convert to a HashSet to get rid of duplicates
HashSet<Character> uniqueSet = new HashSet<>(found);
//Convert back to an ArrayList(to be returned) after filtration of duplicates.
ArrayList<Character> filtered = new ArrayList<>(uniqueSet);
return filtered;
}
}
redakcją błędu? Teraz widzę tylko niektóre kody JS i znaki losowe. – Mario