Get the best out of our app
GFG App
Open App
Browser
Continue

# Generate an N-length string having longest palindromic substring of length K

Given two integers N and K (K â‰¤ N), the task is to obtain a string of length N such that maximum length of a palindromic substring of this string is K.

Examples:

Input: N = 5, K = 3
Output: “abacd”
Explanation: Palindromic substrings are “a”, “b”, “c”, “d” and “aba”. Therefore, the longest palindromic substring from the given string is of length 3.

Input: N = 8, K = 4
Output: “abbacdef”
Explanation: Palindromic substrings are “a”, “b”, “c”, “d”, “e”, “f”, “bb”, “abba”. Therefore, the longest palindromic substring from the given string is of length 4.

Approach: The idea is based on the following observation that the string of any length made up of a single character is always palindromic, e.g. {‘a’, ‘bbbbb’, ‘ccc’}. So, in order to generate a string with required conditions, print ‘a’ K times such that it has a longest palindromic substring of length K fill the remaining N – K slots by a non-palindromic sequence.

Follow the steps below to solve the problem:

• Print ‘a’ exactly K times.
• Consider a non-palindromic sequence, say “bcd”.
• Print the string.

Below is the implementation of the above approach:

## C++

 `// C++ program to implement the above approach`   `#include ` `using` `namespace` `std;`   `// Function to generate a string of` `// length N having longest palindromic` `// substring of length K` `void` `string_palindrome(``int` `N, ``int` `K)` `{`   `    ``// Fill first K characters with 'a'` `    ``for` `(``int` `i = 0; i < K; i++)` `        ``cout << ``"a"``;`   `    ``// Stores a non-palindromic sequence` `    ``// to be repeated for N - k slots` `    ``string s = ``"bcd"``;`   `    ``// Print N - k remaining characters` `    ``for` `(``int` `i = 0; i < N - K; i++)` `        ``cout << s[i % 3];` `}`   `// Driver Code` `int` `main()` `{`   `    ``// Given N and K` `    ``int` `N = 5, K = 3;` `    ``string_palindrome(N, K);`   `    ``return` `0;` `}`

## Java

 `// Java program to implement the above approach` `import` `java.util.*;`   `class` `GFG` `{`   `// Function to generate a String of` `// length N having longest palindromic` `// subString of length K` `static` `void` `String_palindrome(``int` `N, ``int` `K)` `{`   `    ``// Fill first K characters with 'a'` `    ``for` `(``int` `i = ``0``; i < K; i++)` `        ``System.out.print(``"a"``);`   `    ``// Stores a non-palindromic sequence` `    ``// to be repeated for N - k slots` `    ``String s = ``"bcd"``;`   `    ``// Print N - k remaining characters` `    ``for` `(``int` `i = ``0``; i < N - K; i++)` `        ``System.out.print(s.charAt(i % ``3``));` `}`   `// Driver Code` `public` `static` `void` `main(String[] args)` `{`   `    ``// Given N and K` `    ``int` `N = ``5``, K = ``3``;` `    ``String_palindrome(N, K);` `}` `}`   `// This code is contributed by 29AjayKumar`

## Python3

 `# Python3 program to implement the above approach`   `# Function to generate a string of` `# length N having longest palindromic` `# substring of length K` `def` `string_palindrome(N, K):`   `    ``# Fill first K characters with 'a'` `    ``for` `i ``in` `range``(K):` `        ``print``(``"a"``, end ``=` `"")`   `    ``# Stores a non-palindromic sequence` `    ``# to be repeated for N - k slots` `    ``s ``=` `"bcd"`   `    ``# Print N - k remaining characters` `    ``for` `i ``in` `range``(N ``-` `K):` `        ``print``(s[i ``%` `3``], end ``=` `"")`   `# Driver Code` `if` `__name__ ``=``=` `'__main__'``:` `  `  `    ``# Given N and K` `    ``N, K ``=` `5``, ``3` `    ``string_palindrome(N, K)`   `    ``# This code is contributed by mohit kumar 29`

## C#

 `// C# program to implement the above approach` `using` `System;` `class` `GFG` `{` `    `  `    ``// Function to generate a String of` `    ``// length N having longest palindromic` `    ``// subString of length K` `    ``static` `void` `String_palindrome(``int` `N, ``int` `K)` `    ``{` `    `  `        ``// Fill first K characters with 'a'` `        ``for` `(``int` `i = 0; i < K; i++)` `            ``Console.Write(``"a"``);` `    `  `        ``// Stores a non-palindromic sequence` `        ``// to be repeated for N - k slots` `        ``string` `s = ``"bcd"``;` `    `  `        ``// Print N - k remaining characters` `        ``for` `(``int` `i = 0; i < N - K; i++)` `            ``Console.Write(s[i % 3]);` `    ``}` `    `  `    ``// Driver Code` `    ``public` `static` `void` `Main(``string``[] args)` `    ``{` `    `  `        ``// Given N and K` `        ``int` `N = 5, K = 3;` `        ``String_palindrome(N, K);` `    ``}` `}`   `// This code is contributed by AnkThon`

## Javascript

 ``

Output:

`aaabc`

Time complexity: O(N)
Auxiliary space: O(1)

My Personal Notes arrow_drop_up
Similar Reads
Related Tutorials