Dada una string str que puede contener caracteres duplicados, la tarea es imprimir todas las permutaciones distintas de la string dada de modo que ninguna permutación se repita en la salida.
Ejemplos:
Entrada: str = “ABA”
Salida:
ABA
AAB
BAAEntrada: str = “ABC”
Salida:
ABC
ACB
BAC
BCA
CBA
CAB
Enfoque: En este artículo se ha discutido un enfoque para generar todas las permutaciones de una string determinada . Todas las permutaciones generadas por este enfoque se pueden almacenar en un HashSet para evitar duplicados.
A continuación se muestra la implementación del enfoque anterior:
// Java implementation of the approach import java.util.HashSet; public class GFG { // To store all the generated permutations public static HashSet<String> h = new HashSet<String>(); public static void permute(char s[], int i, int n) { // If the permutation is complete if (i == n) { // If set doesn't contain // the permutation already if (!(h.contains(String.copyValueOf(s)))) { h.add(String.copyValueOf(s)); // Print the generated permutation System.out.println(s); } } else { // One by one swap the jth // character with the ith for (int j = i; j <= n; j++) { // Swapping a[i] and a[j]; char temp = s[i]; s[i] = s[j]; s[j] = temp; // Revert the swapping permute(s, i + 1, n); temp = s[i]; s[i] = s[j]; s[j] = temp; } } } // Driver code public static void main(String args[]) { char s[] = { 'A', 'B', 'A' }; permute(s, 0, s.length - 1); } }
Producción:
ABA AAB BAA
Publicación traducida automáticamente
Artículo escrito por sunilkannur98 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA