List all permutations of a given string in dictionary order in C++

Understanding String Permutations

String permutations refer to all possible arrangements of characters in a given string. The dictionary order means sorting them lexicographically.

We will explore three different methods to list all permutations of a given string in C++.

Method 1: Using Recursion

This method generates permutations recursively by swapping characters.

#include <iostream>
#include <algorithm>
using namespace std;

void permute(string str, int l, int r) {
    if (l == r)
        cout << str << "\n";
    else {
        for (int i = l; i <= r; i++) {
            swap(str[l], str[i]);
            permute(str, l + 1, r);
            swap(str[l], str[i]);
        }
    }
}

int main() {
    string str = "abc";
    permute(str, 0, str.size() - 1);
    return 0;
}
            
Input: abc
Output: abc, acb, bac, bca, cab, cba

Method 2: Using Next Permutation

This method generates permutations in lexicographical order.

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    string str = "abc";
    sort(str.begin(), str.end());
    do {
        cout << str << "\n";
    } while (next_permutation(str.begin(), str.end()));
    return 0;
}
            
Input: abc
Output: abc, acb, bac, bca, cab, cba

Method 3: Using STL

This method sorts the string and uses C++'s next_permutation function.

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    string str = "abc";
    sort(str.begin(), str.end());
    cout << str << "\n";
    while (next_permutation(str.begin(), str.end())) {
        cout << str << "\n";
    }
    return 0;
}
            
Input: abc
Output: abc, acb, bac, bca, cab, cba
Strings

Below You will find some of the most important codes in languages like C, C++, Java, and Python. These codes are of prime importance for college semester exams and online tests.

Getting Started

Check whether a character is a vowel or consonant: C C++ Java Python

Check whether a character is an alphabet or not: C C++ Java Python

Find the ASCII value of a character: C C++ Java Python

Length of the string without using strlen() function: C C++ Java Python

Toggle each character in a string: C C++ Java Python

Count the number of vowels: C C++ Java Python

Remove the vowels from a string: C C++ Java Python

Check if the given string is Palindrome or not: C C++ Java Python

Print the given string in reverse order: C C++ Java Python

Remove all characters from string except alphabets: C C++ Java Python

Remove spaces from a string: C C++ Java Python

Replace a sub-string in a string: C C++ Java Python

Count common sub-sequences in two strings: C C++ Java Python

Compare two strings with wildcard support in one of them: C C++ Java Python

List all permutations of a given string in dictionary order: C C++ Java Python

Operations on Strings: C C++ Java Python