У меня возникли проблемы с печатью всех комбинаций гласных заданного ввода. Мой вход «ЧТО-ТО», и я хотел бы распечатать все комбинации гласных, такие как sxmxthxng, где x - гласные гласных. Я считаю, что моя проблема в том, что я нахожу гласную, меняю ее на все остальные гласные и двигаюсь дальше. Мне нужно продолжить оставшуюся часть слова и найти дополнительные гласные и изменить их перед продолжением.Как создать все комбинации гласных String и добавить каждую комбинацию в ArrayList
Другие рефов
vowelList is an ArrayList containing all lower case vowels.
Код
private static void createVowelCombos(String word) {
Set<String> rmRepeats = new HashSet<>();
StringBuilder sbAddWord = new StringBuilder(word);
String[] splitWord = word.split("");
for (int i = 0; i < word.length(); i++) {
// System.out.println("real word: " + splitWord[i]);
if (splitWord[i].matches(".*[aeiou]")) {
// System.out.println("Split: " + splitWord[i]);
for (int j = 0; j < 5; j++) {
sbAddWord.setCharAt(i, vowelList.get(j).charAt(0));
System.out.println(sbAddWord.toString());
}
}
}
}
Пример вывода с входом "НЕЧТО"
samething
semething
simething
something
sumething
sumathing
sumething
sumithing
sumothing
sumuthing
sumuthang
sumutheng
sumuthing
sumuthong
sumuthung
По какой-то причине он дает мне все комбинации с 'и', но а не другие гласные. Я хотел бы получить все результаты для других гласных.
Во-первых, вы должны попытаться создать функцию, которая печатает все перестановки строки. Таким образом, ввод abc будет выводить abc, acb, bca, bac, cab, cba. Это довольно сложная функция для создания, если раньше вы никогда не делали рекурсивный метод. –
Да, у меня это, проблема в том, что я не хочу список 12! длинный. Я пытаюсь просто собрать все комбинации гласных. Который я думал, что могу сделать с вложенным циклом. – Yawn
Вложенные циклы полезны, когда вы знаете, сколько циклов в гнездо. Однако в этом приложении вы не представляете, сколько гласных будет в слове. Для этого вам следует использовать рекурсивный метод. – coolioasjulio