Програма Java за изчисляване на всички пермутации на низа

В този пример ще се научим да изчисляваме всички пермутации на низа в Java.

За да разберете този пример, трябва да имате познанията по следните теми за програмиране на Java:

  • Java String
  • Java рекурсия
  • Java Scanner Class

Пермутация на низа означава всички възможни нови низове, които могат да се образуват чрез размяна на позицията на символите на низа. Например низ 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 използвахме рекурсията, за да изчислим всички пермутации на низ. Тук съхраняваме пермутацията в набор. Така че, няма да има дублирана пермутация.

Интересни статии...