Given a palindromic string S, the task is to find the count of palindromic strings possible by swapping a pair of character at a time.
Input: s = “abba”
1st Swap: abba -> abba
2nd Swap: abba -> abba
All other swaps will lead to a non-palindromic string.
Therefore, the count of possible strings is 2.
Input: s = “aaabaaa”
The simplest approach to solve the problem is to generate all possible pair of characters from the given string and for each pair if swapping them generates a palindromic string or not. If found to be true, increase count. Finally, print the value of count.
Time Complexity: O(N3)
Auxiliary Space: O(1)
To optimize the above-mentioned approach, calculate the frequencies of each character in the string. For the string to remain a palindrome, only the same character can be swapped in the string.
Follow the steps below to solve the problem:
- Traverse the string.
- For every ith character, increase count with the current frequency of the character. This increases the number of swaps the current character can make with its previous occurrences.
- Increase the frequency of the ith character.
- Finally, after complete traversal of the string, print count.
Below is the implementation of above approach:
Time Complexity: O(N)
Auxiliary Space: O(N)
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.
- Make the string lexicographically smallest and non palindromic by swapping of adjacent pair of characters
- Count of distinct Strings possible by swapping prefixes of pairs of Strings from the Array
- Print all possible palindromic string formed using any pair of given strings
- Largest palindromic string possible from given strings by rearranging the characters
- Count of non-palindromic strings of length M using given N characters
- Count the Number of matching characters in a pair of strings
- Count of Distinct strings possible by inserting K characters in the original string
- Find a pair of elements swapping which makes sum of two arrays same
- Lexicographically smaller string by swapping at most one character pair
- Longest Palindromic Substring using Palindromic Tree | Set 3
- Make palindromic string non-palindromic by rearranging its letters
- Minimum cuts required to convert a palindromic string to a different palindromic string
- Replace minimal number of characters to make all characters pair wise distinct
- Reduce Hamming distance by swapping two characters
- Maximum length of balanced string after swapping and removal of characters
- Check if a string can be converted to another by swapping of adjacent characters of given type
- Check if it is possible to make two martices strictly increasing by swapping corresponding values only
- Smallest number possible by swapping adjacent even odd pairs
- Count pairs of non-overlapping palindromic sub-strings of the given string
- Count of unique palindromic strings of length X from given 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.