Print all permutation of a string using ArrayList

28 Mar, 2022
Given a string str, the task is to print all the permutations of str. A permutation is an arrangement of all or part of a set of objects, with regard to the order of the arrangement. For instance, the words ‘bat’ and ‘tab’ represents two distinct permutation (or arrangements) of a similar three letter word.Examples:  
Input: str = “abc” Output: abc acb bac bca cba cabInput: str = “bat” Output: bat bta abt atb tba tab  
 
Approach: Write a recursive function that will generate all the permutations of the string. Terminating condition will be when the passed string is empty, in that case the function will return an empty ArrayList.Below is the implementation of the above approach:  
Java
C#
Javascript
// Java implementation of the approachimport 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# implementation of the approachusing 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
<script> // JavaScript implementation of the approach // Utility function to print the contents    // of the ArrayListfunction 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 strfunction 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 codelet str = "abc";printArrayList(getPermutation(str)); // This code is contributed by unknown2108 </script>
abc bac bca acb cab cba
 
29AjayKumar
unknown2108
simranarora5sos
Java-ArrayList
Backtracking
Java Programs
Strings
Strings
Backtracking
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.