Given a string S consisting of lowercase characters(a-z) only, the task is to print a new string by rearranging the string in such a way that maximizes the number of palindromic substrings. In case of multiple answers, print any one.
Note: even if some substrings coincide, count them as many times as they appear in the obtained string.
Input: s = “aabab”
string “ababa” has 9 palindromic substrings: “a”, “b”, “a”, “b”, “a”, “aba”, “bab”, “aba”, “ababa”.
Input: s = “aa”
The given string has the maximum number of palindromic substrings possible, “a”, “a” and “aa”.
The problem might look to be a complex one but on solving for various cases and having observations will lead to an easy solution.
A simple solution is to sort the string and print it. Sorting takes O(N * log N).
An efficient solution is to count the frequency of each character using a freq array and then construct the string using the freq array.
Below is the implementation of the above approach.
Time Complexity: O(N)
Auxiliary Space: O(26)
- Lexicographically all Shortest Palindromic Substrings from a given string
- Rearrange given string to maximize the occurrence of string t
- Permutation of given string that maximizes count of Palindromic substrings
- Maximize the number of palindromic Strings
- Rearrange the array to maximize the number of primes in prefix sum of the array
- Minimum cuts required to convert a palindromic string to a different palindromic string
- Number of substrings of a string
- Count all Prime Length Palindromic Substrings
- Count of Palindromic substrings in an Index range
- Number of even substrings in a string of digits
- Number of substrings of one string present in other
- Sum of all substrings of a string representing a number | Set 1
- Number of substrings divisible by 6 in a string of integers
- Number of substrings with odd decimal value in a binary string
- Number of strings of length N with no palindromic sub string