Given a string, generate all permutations of it that do not contain ‘B’ after ‘A’, i.e., the string should not contain “AB” as a substring.
Input : str = “ABC”
Output : ACB, BAC, BCA, CBA
Out of 6 permutations of “ABC”, 4 follow the given constraint and 2 (“ABC” and “CAB”) do not follow.
Input : str = “BCD”
Output : BCD, BDC, CDB, CBD, DCB, DBC
A simple solution is to generate all permutations. For every permutation, check if it follows the given constraint.
ACB BAC BCA CBA
The above solution first generates all permutations, then for every permutation it checks if it follows given constraint or not.
An efficient solution is to use Backtracking. We cut down the recursion tree whenever we see that substring “AB” is formed. How do we do this? we add a isSafe() function. Before doing a swap, we check if previous character is ‘A’ and current character is ‘B’.
ACB BAC BCA CBA
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- Generate all binary permutations such that there are more or equal 1's than 0's before every point in all permutations
- Generate all cyclic permutations of a number
- Generate all possible permutations of a Number divisible by N
- Iterative program to generate distinct Permutations of a String
- Generate permutations with only adjacent swaps allowed
- Generate a string whose all K-size substrings can be concatenated to form the given string
- Check if it is possible to convert one string into another with given constraints
- Construct a binary string following the given constraints
- Remove minimum characters from string to split it into three substrings under given constraints
- Find value after N operations to remove N characters of string S with given constraints
- Write a program to print all permutations of a given string
- Print all distinct permutations of a given string with duplicates
- Print all the palindromic permutations of given string in alphabetic order
- Number of permutations of a string in which all the occurrences of a given character occurs together
- Print all lexicographical greater permutations of a given string
- Generate all rotations of a given string
- Program to generate all possible valid IP addresses from given string
- Program to generate all possible valid IP addresses from given string | Set 2
- Generate a string which differs by only a single character from all given strings
- Print all palindrome permutations of a string
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.