Permutaciones distintas de una string que contiene duplicados usando HashSet en Java

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
BAA

Entrada: 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *