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.
Below are the permutations of string ABC.
ABC ACB BAC BCA CBA CAB
We have discussed C implementation to print all permutations of a given string using backtracking here. In this post, C++ implementation using STL is discussed.
Method 1 (Using rotate())
std::rotate function rotates elements of a vector/string such that the passed middle element becomes first. For example, if we call rotate for “ABCD” with middle as second element, the string becomes “BCDA” and if we again call rotate with middle as second element, the string becomes “CDAB”. Refer this for a sample program.
Below is C++ implementation.
ABC ACB BCA BAC CAB CBA
Method 2 (using next_permutation)
We can use next_permutation that modifies a string so that it stores lexicographically next permutation. If current string is lexicographically largest, i.e., “CBA”, then next_permutation returns false.
We first sort the string, so that it is converted to lexicographically smallest permutation. Then we one by one call next_permutation until it returns false.
ABC ACB BCA BAC CAB CBA
Note that the second method always prints permutations in lexicographically sorted order irrespective of input string.
This article is contributed by Aditya Goel. If you like GeeksforGeeks and would like to contribute, you can also write an article and mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.
- Find Kth largest string from the permutations of the string with two characters
- Distinct permutations of the string | Set 2
- All permutations of a string using iteration
- Print all palindrome permutations of a string
- Time complexity of all permutations of a string
- Print all permutations of a string in Java
- Permutations of string such that no two vowels are adjacent
- Check if a binary string contains all permutations of length k
- Check if given string can be formed by two other strings or their permutations
- Print all lexicographical greater permutations of a given string
- Print all distinct permutations of a given string with duplicates
- Count of cyclic permutations having XOR with other binary string as 0
- Generate all permutations of a string that follow given constraints
- Write a program to print all permutations of a given string
- Print first n distinct permutations of string using itertools in Python
- Number of unique permutations starting with 1 of a Binary String
- Java Program to print distinct permutations of a string
- Distinct permutations of a string containing duplicates using HashSet in Java
- Iterative program to generate distinct Permutations of a String
- Print all the palindromic permutations of given string in alphabetic order
Improved By : _dayanand