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