Skip to content
Related Articles
Open in App
Not now

Related Articles

C++ Program To Print All Permutations Of A Given String

Improve Article
Save Article
  • Last Updated : 11 Dec, 2021
Improve Article
Save Article

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(

Below are the permutations of string ABC. 

Here is a solution that is used as a basis in backtracking.



// C++ program to print all permutations 
// with duplicates allowed 
#include <bits/stdc++.h> 
using namespace std; 
// Function to print permutations 
// of string 
// This function takes three parameters: 
// 1. String 
// 2. Starting index of the string 
// 3. Ending index of the string. 
void permute(string a, int l, int r) 
    // Base case 
    if (l == r) 
        // Permutations made 
        for (int i = l; i <= r; i++) 
            // Swapping done 
            swap(a[l], a[i]); 
            // Recursion called 
            permute(a, l+1, r); 
            swap(a[l], a[i]); 
// Driver Code 
int main() 
    string str = "ABC"
    int n = str.size(); 
    permute(str, 0, n-1); 
    return 0; 
// This is code is contributed by rathbhupendra 



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++ program to implement
// the above approach
#include <bits/stdc++.h>
#include <string>
using namespace std;
void permute(string s, 
             string answer)
    if(s.length() == 0)
        cout << answer << "  ";
    for(int i = 0; 
            i < s.length(); i++)
        char ch = s[i];
        string left_substr = s.substr(0, i);
        string right_substr = s.substr(i + 1);
        string rest = left_substr + right_substr;
        permute(rest , answer+ch);
// Driver code
int main()
    string s;
    string answer = "";
    cout << "Enter the string : ";
    cin >> s;
    cout << 
    "All possible strings are : ";
    permute(s, answer);
    return 0;


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!

My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!