Програма Java для обчислення всіх перестановок рядка

У цьому прикладі ми навчимося обчислювати всі перестановки рядка в Java.

Щоб зрозуміти цей приклад, ви повинні знати такі теми програмування Java:

  • Рядок Java
  • Рекурсія Java
  • Клас сканера Java

Під перестановкою рядка маються на увазі всі можливі нові рядки, які можуть бути сформовані шляхом обміну позицією символів рядка. Наприклад, рядок ABC має перестановки (ABC, ACB, BAC, BCA, CAB, CBA) .

Приклад: програма Java для отримання всіх перестановок рядка

 import java.util.HashSet; import java.util.Scanner; import java.util.Set; class Main ( public static Set getPermutation(String str) ( // create a set to avoid duplicate permutation Set permutations = new HashSet(); // check if string is null if (str == null) ( return null; ) else if (str.length() == 0) ( // terminating condition for recursion permutations.add(""); return permutations; ) // get the first character char first = str.charAt(0); // get the remaining substring String sub = str.substring(1); // make recursive call to getPermutation() Set words = getPermutation(sub); // access each element from words for (String strNew : words) ( for (int i = 0;i<=strNew.length();i++)( // insert the permutation to the set permutations.add(strNew.substring(0, i) + first + strNew.substring(i)); ) ) return permutations; ) public static void main(String() args) ( // create an object of scanner class Scanner input = new Scanner(System.in); // take input from users System.out.print("Enter the string: "); String data = input.nextLine(); System.out.println("Permutations of " + data + ": " + getPermutation(data)); ) )

Вихідні дані

 Введіть рядок: ABC Перестановки ABC: (ACB, BCA, ABC, CBA, BAC, CAB)

У Java ми використовували рекурсію для обчислення всіх перестановок рядка. Тут ми зберігаємо перестановку у наборі. Отже, дубльованих перестановок не буде.

Цікаві статті...