Given two intgers **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 = 3Output:“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 = 4Output:“abbacdef”Explanation:Palindromic subtsrings 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 <bits/stdc++.h>` `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;` `}` |

*chevron_right*

*filter_none*

## 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` |

*chevron_right*

*filter_none*

## 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"` ` ` `# PrN - 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` |

*chevron_right*

*filter_none*

## 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` |

*chevron_right*

*filter_none*

**Output:**

aaabc

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

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.