Given a string that may contain duplicates, write a function to print all permutations of given string such that no permutation is repeated in output.
Input: str = "AB" Output: AB BA Input: str = "AA" Output: AA Input: str = "ABC" Output: ABC ACB BAC BCA CBA CAB Input: str = "ABA" Output: ABA AAB BAA Input: str = "ABCA" Output: AABC AACB ABAC ABCA ACBA ACAB BAAC BACA BCAA CABA CAAB CBAA
We have discussed an algorithm to print all permutations in below post. It is strongly recommended to refer below post as a prerequisite of this post.
The algorithm discussed on above link doesn’t handle duplicates.
1 ABCC 2 ACBC 3 ACCB 4 BACC 5 BCAC 6 BCCA 7 CABC 8 CACB 9 CBAC 10 CBCA 11 CCAB 12 CCBA
The above code is taken from a comment below by Mr. Lazy.
Time Complexity: O(n2 * n!)
Auxiliary Space: O(1)
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details
- Print distinct sorted permutations with duplicates allowed in input
- Distinct permutations of a string containing duplicates using HashSet in Java
- Print first n distinct permutations of string using itertools in Python
- Java Program to print distinct permutations of a string
- Distinct permutations of the string | Set 2
- Iterative program to generate distinct Permutations of a String
- Print all permutations of a string in Java
- Print all palindrome permutations of a string
- Write a program to print all permutations of a given string
- Print all the palindromic permutations of given string in alphabetic order
- Print the two possible permutations from a given sequence
- Print all permutations with repetition of characters
- Print k different sorted permutations of a given array
- Iterative approach to print all permutations of an Array
- Print all permutations in sorted (lexicographic) order