C# Program to print all permutations of a given string - GeeksforGeeks

10 Dec, 2021
A permutation also called an “arrangement number” or “order,” is a rearrangement of the elements of an ordered list S into a one-to-one correspondence with S itself. A string of length n has n! permutation. 
Source: Mathword(http://mathworld.wolfram.com/Permutation.html)
Below are the permutations of string ABC. ABC ACB BAC BCA CBA CAB
Here is a solution that is used as a basis in backtracking.
C#
// C# program to print all permutations // of a given string. using System;   class GFG {     /* Permutation function @param        str string to calculate permutation        for @param l starting index @param        r end index */    private static void permute(String str,                                 int l, int r)     {         if (l == r)             Console.WriteLine(str);         else        {             for (int i = l; i <= r; i++)             {                 str = swap(str, l, i);                 permute(str, l + 1, r);                 str = swap(str, l, i);             }         }     }       /* Swap Characters at position        @param a string value @param        i position 1 @param j position 2        @return swapped string */    public static String swap(String a,                             int i, int j)     {         char temp;         char[] charArray = a.ToCharArray();         temp = charArray[i] ;         charArray[i] = charArray[j];         charArray[j] = temp;         string s = new string(charArray);         return s;     }   // Driver Code public static void Main() {     String str = "ABC";     int n = str.Length;     permute(str, 0, n-1); } } // This code is contributed by mits 
Output: 
ABC
ACB
BAC
BCA
CBA
CAB
Algorithm Paradigm: Backtracking 
Time Complexity: O(n*n!) Note that there are n! permutations and it requires O(n) time to print a permutation.
Auxiliary Space: O(r – l)
Note: The above solution prints duplicate permutations if there are repeating characters in the input string. Please see the below link for a solution that prints only distinct permutations even if there are duplicates in input.Print all distinct permutations of a given string with duplicates. Permutations of a given string using STL
Another approach:
C#
// C# program to implement// the above approachusing System;public class GFG{   static void permute(String s,                    String answer){       if (s.Length == 0)    {        Console.Write(answer + "  ");        return;    }          for(int i = 0 ;i < s.Length; i++)    {        char ch = s[i];        String left_substr = s.Substring(0, i);        String right_substr = s.Substring(i + 1);        String rest = left_substr + right_substr;        permute(rest, answer + ch);    }}  // Driver codepublic static void Main(String []args){        String s;    String answer="";          Console.Write(    "Enter the string : ");    s = Console.ReadLine();          Console.Write(    "\nAll possible strings are : ");    permute(s, answer);}}// This code is contributed by gauravrajput1 
Output:
Enter the string : abc
All possible strings are : abc  acb  bac  bca  cab  cba
Time Complexity: O(n*n!) The time complexity is the same as the above approach, i.e. there are n! permutations and it requires O(n) time to print a permutation.
Auxiliary Space: O(|s|)
Please refer complete article on Write a program to print all permutations of a given string for more details!
C# Programs
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
How to Remove Duplicate Values From an Array in C#?
C# Program to Convert a Binary String to an Integer
How to Convert ASCII Char to Byte in C#?
C# Program to Demonstrate the IList Interface
Different Ways to Take Input and Print a Float Value in C#
C# Program to Read and Write a Byte Array to File using FileStream Class
C# Program to Check a Specified Type is an Enum or Not
How to Calculate the Code Execution Time in C#?
C# Program to Sort a List of Integers Using the LINQ OrderBy() Method
Hash Function for String data in C#