Imprima todas las permutaciones de una string sin repetición usando Colecciones en Java

Dada una string str , la tarea es imprimir todas las permutaciones de str . Una permutación es un arreglo de todo o parte de un conjunto de objetos, con respecto al orden del arreglo. Una permutación no debe tener strings repetidas en la salida.

Ejemplos:

Entrada: str = «aa»
Salida:
aa
Tenga en cuenta que «aa» se imprimirá solo una vez
, ya que no se permiten duplicados.

Entrada: str = “ab”
Salida:
ab
ba

Enfoque: escriba una función recursiva que elimine un carácter uno por uno de la string original y genere una nueva string agregando estos caracteres eliminados. La condición base será cuando se hayan utilizado todos los caracteres. En ese caso, inserte la string generada (una permutación de la string original) en un conjunto para evitar duplicados.

A continuación se muestra la implementación del enfoque anterior:

// Java implementation of the approach
import java.util.*;
public class GFG {
  
    static Set<String> hash_Set = new HashSet<>();
  
    // Recursive function to generate
    // permutations of the string
    static void Permutation(String str, String ans)
    {
  
        // If string is empty
        if (str.length() == 0) {
  
            // Add the generated permutation to the
            // set in order to avoid duplicates
            hash_Set.add(ans);
            return;
        }
  
        for (int i = 0; i < str.length(); i++) {
  
            // ith character of str
            char ch = str.charAt(i);
  
            // Rest of the string after excluding
            // the ith character
            String ros = str.substring(0, i)
                         + str.substring(i + 1);
  
            // Recurvise call
            Permutation(ros, ans + ch);
        }
    }
  
    // Driver code
    public static void main(String[] args)
    {
        String s = "ab";
  
        // Generate permutations
        Permutation(s, "");
  
        // Print the generated permutations
        hash_Set.forEach((n) -> System.out.println(n));
    }
}
Producción:

ab
ba

Publicación traducida automáticamente

Artículo escrito por GOKULG3 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 *