Permutation of given string that maximizes count of Palindromic substrings

• Difficulty Level : Medium
• Last Updated : 27 May, 2021

Given a string S, the task is to find the permutation of the string such that palindromic substrings in the string are maximum.
Note: There can be multiple answers for each string.
Examples:

Input: S = “abcb”
Output: “abbc”
Explanation:
“abbc” is the string with maximum number of palindromic substrings.
Palindromic Substrings are – {“a”, “b”, “b”, “c”, “abbc”}
Input: S = “oolol”
Output: “ololo”

Approach: The idea is to sort the characters of the string such that individually and together form a palindromic substring which will maximize the total palindromic substring possible for the permutation of the string.
Below is the implementation of the above approach:

C++

 // C++ implementation to find the// permutation of the given string// such that palindromic substrings// is maximum in the string #include using namespace std; // Function to find the permutation// of the string such that the// palindromic substrings are maximumstring maxPalindromicSubstring(string s){         // Sorting the characters of  the    // given string    sort(s.begin(), s.end());         cout << s;         return s;} // Driver Codeint main(){    // String s    string s = "abcb";         // Function Call    maxPalindromicSubstring(s);    return 0;}

Java

 // Java implementation to find the// permutation of the given string// such that palindromic substrings// is maximum in the stringimport java.io.*;import java.util.*; class GFG {     // Function to find the permutation// of the string such that the// palindromic substrings are maximumstatic String maxPalindromicSubstring(String s){         // Convert input string to char array    char tempArray[] = s.toCharArray();             // Sorting the characters of the    // given string    Arrays.sort(tempArray);             System.out.println(tempArray);         // Return new sorted string    return new String(tempArray);} // Driver codepublic static void main(String[] args){         // String s    String s = "abcb";         // Function Call    maxPalindromicSubstring(s);}} // This code is contributed by coder001

Python3

 # Python3 implementation to find the# permutation of the given string# such that palindromic substrings# is maximum in the string # Function to find the permutation# of the string such that the# palindromic substrings are maximumdef maxPalindromicSubstring(s):         # Sorting the characters of the    # given string    res = ''.join(sorted(s))    s = str(res)         print(s) # Driver Codeif __name__ == '__main__':         # String s    s = "abcb"         # Function Call    maxPalindromicSubstring(s) # This code is contributed by BhupendraSingh

C#

 // C# implementation to find the// permutation of the given string// such that palindromic substrings// is maximum in the stringusing System;class GFG{     // Function to find the permutation// of the string such that the// palindromic substrings are maximumstatic String maxPalindromicSubstring(String s){         // Convert input string to char array    char []tempArray = s.ToCharArray();             // Sorting the characters of the    // given string    Array.Sort(tempArray);             Console.WriteLine(tempArray);         // Return new sorted string    return new String(tempArray);} // Driver codepublic static void Main(){         // String s    String s = "abcb";         // Function Call    maxPalindromicSubstring(s);}} // This code is contributed by sapnasingh4991

Javascript


Output:
abbc

My Personal Notes arrow_drop_up