Permutation of given string that maximizes count of Palindromic substrings

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation to find the
// permutation of the given string
// such that palindromic substrings
// is maximum in the string
import java.io.*; 
import java.util.*; 
  
class GFG { 
      
// Function to find the permutation
// of the string such that the 
// palindromic substrings are maximum
static 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 code 
public static void main(String[] args) 
      
    // String s
    String s = "abcb";
      
    // Function Call
    maxPalindromicSubstring(s);
  
// This code is contributed by coder001

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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 maximum
def maxPalindromicSubstring(s):
      
    # Sorting the characters of the
    # given string
    res = ''.join(sorted(s)) 
    s = str(res)
      
    print(s)
  
# Driver Code
if __name__ == '__main__':
      
    # String s
    s = "abcb"
      
    # Function Call
    maxPalindromicSubstring(s)
  
# This code is contributed by BhupendraSingh

chevron_right


Output:

abbc

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




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.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.



Improved By : bgangwar59, coder001