# Generate a String of having N*N distinct non-palindromic Substrings

• Last Updated : 11 May, 2021

Given an even integer N, the task is to construct a string such that the total number of distinct substrings of that string that are not a palindrome equals N2.

Examples:

Input: N = 2
Output: aabb
Explanation:
All the distinct non-palindromic substrings are ab, abb, aab and aabb
Therefore, the count of non-palindromic substrings is 4 = 2 2
Input: N = 4
Output: cccczzzz
Explanation:
All distinct non-palindromic substrings of the string are cz, czz, czzz, czzzz, ccz, cczz, cczzz, cczzzz, cccz, ccczz, ccczzz, ccczzzz, ccccz, cccczz, cccczzz, cccczzzz
The count of non-palindromic substrings is 16.

Approach:
It can be observed that, if the first N characters of a string are the same, followed by N identical characters different from the first N characters, then the count of distinct non-palindromic substrings will be N2.

Proof:

N = 3
str = “aaabbb”
The string can be split into two substrings of N characters each: “aaa” and “bbb”
The first character ‘a’ from the first substring forms N distinct non-palindromic substrings “ab”, “abb”, “abbb” with the second substring.
Similarly, first two characters “aa” forms N distinct non-palindromic substrings “aab”, “aabb”, “aabbb”.
Similarly, remaining N – 2 characters of the first substring each form N distinct non-palindromic substrings as well.
Therefore, the total number of distinct non-palindromic substrings is equal to N2

Therefore, to solve the problem, print ‘a’ as the first N characters of the string and ‘b’ as the next N characters of the string.

Below is the implementation of the above approach:

## C++

 `// C++ Program to implement``// the above approach``#include ``using` `namespace` `std;` `// Function to construct a string``// having N*N non-palindromic substrings``void` `createString(``int` `N)``{``    ``for` `(``int` `i = 0; i < N; i++) {``        ``cout << ``'a'``;``    ``}``    ``for` `(``int` `i = 0; i < N; i++) {``        ``cout << ``'b'``;``    ``}``}` `// Driver Code``int` `main()``{``    ``int` `N = 4;` `    ``createString(N);``    ``return` `0;``}`

## Java

 `// Java Program to implement``// the above approach``class` `GFG{` `// Function to construct a string``// having N*N non-palindromic substrings``static` `void` `createString(``int` `N)``{``    ``for` `(``int` `i = ``0``; i < N; i++)``    ``{``        ``System.out.print(``'a'``);``    ``}``    ``for` `(``int` `i = ``0``; i < N; i++)``    ``{``        ``System.out.print(``'b'``);``    ``}``}` `// Driver Code``public` `static` `void` `main(String[] args)``{``    ``int` `N = ``4``;` `    ``createString(N);``}``}` `// This code is contributed by shivanisinghss2110`

## Python3

 `# Python3 program to implement``# the above approach` `# Function to construct a string``# having N*N non-palindromic substrings``def` `createString(N):` `    ``for` `i ``in` `range``(N):``        ``print``(``'a'``, end ``=` `'')``    ``for` `i ``in` `range``(N):``        ``print``(``'b'``, end ``=` `'')` `# Driver Code``N ``=` `4` `createString(N)` `# This code is contributed by Shivam Singh`

## C#

 `// C# program to implement``// the above approach``using` `System;` `class` `GFG{` `// Function to construct a string``// having N*N non-palindromic substrings``static` `void` `createString(``int` `N)``{``    ``for``(``int` `i = 0; i < N; i++)``    ``{``        ``Console.Write(``'a'``);``    ``}``    ``for``(``int` `i = 0; i < N; i++)``    ``{``        ``Console.Write(``'b'``);``    ``}``}` `// Driver Code``public` `static` `void` `Main(String[] args)``{``    ``int` `N = 4;` `    ``createString(N);``}``}` `// This code is contributed by Princi Singh`

## Javascript

 ``
Output:
`aaaabbbb`

Time Complexity: O(N)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up