Imprima todas las permutaciones de una string usando ArrayList

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. 
Por ejemplo, las palabras ‘bat’ y ‘tab’ representan dos permutaciones distintas (o arreglos) de una palabra similar de tres letras.
Ejemplos: 
 

Entrada: str = “abc” 
Salida: abc acb bac bca cba cab
Entrada: str = “bat” 
Salida: bat bta abt atb tba tab 
 

Enfoque: escriba una función recursiva que genere todas las permutaciones de la string. La condición de terminación será cuando la string pasada esté vacía, en ese caso la función devolverá una ArrayList vacía .
A continuación se muestra la implementación del enfoque anterior: 
 

Java

// Java implementation of the approach
import java.util.ArrayList;
 
public class GFG {
 
    // Utility function to print the contents
    // of the ArrayList
    static void printArrayList(ArrayList<String> arrL)
    {
        arrL.remove("");
        for (int i = 0; i < arrL.size(); i++)
            System.out.print(arrL.get(i) + " ");
    }
 
    // Function to returns the arraylist which contains
    // all the permutation of str
    public static ArrayList<String> getPermutation(String str)
    {
 
        // If string is empty
        if (str.length() == 0) {
 
            // Return an empty arraylist
            ArrayList<String> empty = new ArrayList<>();
            empty.add("");
            return empty;
        }
 
        // Take first character of str
        char ch = str.charAt(0);
 
        // Take sub-string starting from the
        // second character
        String subStr = str.substring(1);
 
        // Recursive call
        ArrayList<String> prevResult = getPermutation(subStr);
 
        // Store the generated permutations
        // into the resultant arraylist
        ArrayList<String> Res = new ArrayList<>();
 
        for (String val : prevResult) {
            for (int i = 0; i <= val.length(); i++) {
                Res.add(val.substring(0, i) + ch + val.substring(i));
            }
        }
 
        // Return the resultant arraylist
        return Res;
    }
 
    // Driver code
    public static void main(String[] args)
    {
        String str = "abc";
        printArrayList(getPermutation(str));
    }
}

C#

// C# implementation of the approach
using System.Collections.Generic;
using System;
 
class GFG
{
 
    // Utility function to print the contents
    // of the ArrayList
    static void printArrayList(List<String> arrL)
    {
        arrL.Remove("");
        for (int i = 0; i < arrL.Count; i++)
            Console.Write(arrL[i] + " ");
    }
 
    // Function to returns the arraylist which contains
    // all the permutation of str
    public static List<String> getPermutation(String str)
    {
 
        // If string is empty
        if (str.Length == 0)
        {
 
            // Return an empty arraylist
            List<String> empty = new List<String>();
            empty.Add("");
            return empty;
        }
 
        // Take first character of str
        char ch = str[0];
 
        // Take sub-string starting from the
        // second character
        String subStr = str.Substring(1);
 
        // Recursive call
        List<String> prevResult = getPermutation(subStr);
 
        // Store the generated permutations
        // into the resultant arraylist
        List<String> Res = new List<String>();
 
        foreach (String val in prevResult)
        {
            for (int i = 0; i <= val.Length; i++)
            {
                Res.Add(val.Substring(0, i) + ch + val.Substring(i));
            }
        }
 
        // Return the resultant arraylist
        return Res;
    }
 
    // Driver code
    public static void Main(String[] args)
    {
        String str = "abc";
        printArrayList(getPermutation(str));
    }
}
 
// This code has been contributed by 29AjayKumar

Javascript

<script>
 
// JavaScript implementation of the approach
 
// Utility function to print the contents
    // of the ArrayList
function printArrayList(arrL)
{
     
        for (let i = 0; i < arrL.length; i++)
            document.write(arrL[i] + " ");
}
 
// Function to returns the arraylist which contains
    // all the permutation of str
function getPermutation(str)
{
    // If string is empty
        if (str.length == 0) {
   
            // Return an empty arraylist
            let empty = [];
            empty.push("");
            return empty;
        }
   
        // Take first character of str
        let ch = str[0];
   
        // Take sub-string starting from the
        // second character
        let subStr = str.substring(1);
   
        // Recursive call
        let prevResult = getPermutation(subStr);
   
        // Store the generated permutations
        // into the resultant arraylist
        let Res = [];
   
        for (let val of prevResult) {
            for (let i = 0; i <= val.length; i++) {
                Res.push(val.substring(0, i) + ch + val.substring(i));
            }
        }
   
        // Return the resultant arraylist
        return Res;
}
 
// Driver code
let str = "abc";
printArrayList(getPermutation(str));
 
// This code is contributed by unknown2108
 
</script>
Producción: 

abc bac bca acb cab cba

 

Publicación traducida automáticamente

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