# Contiguous subsegments of a string having distinct subsequent characters

Given a string str of length L and an integer N, the task is to form a total of (L / N) contiguous subsegments of the string which contain distinct subsequent characters.
Note: that the integer N will be a factor of the length of the string i.e L.

Examples:

Input: str = “geeksforgeeksgfg”, N = 4
Output:
gek
sfor
gek
sfg
The length of “geeksforgeeksgfg” is 16, therefore there will be 4 subsegments.
The first subsegment will contain the characters g, e, e and k but alphabet ‘e’ is repeating,
So we discard one ‘e’. Therefore the final subsegment will be “gek”.
Similarly, the other three subsegments will be “sfor”, “gek” and “sfg”.
Each subsegment should have subsequent distinct characters.

Input: str = “aabdekfgf”, N = 3
Output:
ab
de
fg

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: An array is created everytime the iteration is started over the new subsegment. Those elements are stored in a sequence in that array. If any element already exists in the array then it is not pushed again in the array.

Below is the implementation of the above approach:

## CPP

 `// C++ implementation of the approach  ` `#include ` `using` `namespace` `std; ` ` `  `// Function that prints the segments  ` `void` `sub_segments(string str, ``int` `n) ` `{  ` `    ``int` `l = str.length();  ` `    ``for` `(``int` `x = 0; x < l; x += n)  ` `    ``{  ` `        ``string newlist = str.substr(x, n); ` `         `  `        ``// New array for every iteration  ` `        ``list<``char``> arr; ` ` `  `        ``// Iterator for new array ` `        ``list<``char``>::iterator it; ` ` `  `        ``for``(``auto` `y:newlist) ` `        ``{ ` `            ``it = find(arr.begin(), arr.end(), y); ` `             `  `            ``// Check if iterator points to end or not ` `            ``if``(it == arr.end()) ` `                ``arr.push_back(y); ` `        ``} ` ` `  `        ``for``(``auto` `y:arr) ` `            ``cout << y; ` `        ``cout << endl; ` `    ``}  ` `}  ` ` `  `// Driver code  ` `int` `main()  ` `{  ` `    ``string str = ``"geeksforgeeksgfg"``;  ` `    ``int` `n = 4;  ` `    ``sub_segments(str, n);  ` `}  ` ` `  `// This code is contributed by Sanjit_Prasad `

## Java

 `// Java implementation of the approach ` `import` `java.util.*; ` ` `  `class` `GFG  ` `{ ` ` `  `// Function that prints the segments ` `static` `void` `sub_segments(String str, ``int` `n)  ` `{ ` `    ``int` `l = str.length(); ` `    ``for` `(``int` `x = ``0``; x < l; x += n) ` `    ``{ ` `        ``String newlist = str.substring(x, x + n); ` ` `  `        ``// New array for every iteration ` `        ``List arr = ``new` `ArrayList(); ` `        ``for` `(``char` `y : newlist.toCharArray())  ` `        ``{ ` ` `  `            ``// Check if the character is in the array ` `            ``if` `(!arr.contains(y)) ` `                ``arr.add(y); ` `        ``} ` `        ``for` `(``char` `y : arr) ` `            ``System.out.print(y); ` `        ``System.out.println(); ` `    ``} ` `} ` ` `  `// Driver code ` `public` `static` `void` `main(String[] args) ` `{ ` `    ``String str = ``"geeksforgeeksgfg"``; ` `    ``int` `n = ``4``; ` `    ``sub_segments(str, n); ` `} ` `} ` ` `  `// This code is contributed by Rajput-Ji `

## Python3

 `# Python3 implementation of the approach ` ` `  `# Function that prints the segments ` `def` `sub_segments (string, n): ` `    ``l ``=` `len` `(string) ` `    ``for` `x ``in` `range` `(``0``, l, n): ` `        ``newlist ``=` `string[x : x ``+` `n] ` ` `  `        ``# New array for every iteration ` `        ``arr ``=` `[]  ` `        ``for` `y ``in` `newlist: ` ` `  `           ``# Check if the character is in the array ` `            ``if` `y ``not` `in` `arr: ` `                ``arr.append (y) ` `        `  `        ``print` `(''.join (arr)) ` ` `  `# Driver code ` `string ``=` `"geeksforgeeksgfg"` `n ``=` `4` `sub_segments (string, n) `

## C#

 `// C# implementation of the approach ` `using` `System; ` `using` `System.Collections.Generic; ` ` `  `class` `GFG  ` `{ ` ` `  `// Function that prints the segments ` `static` `void` `sub_segments(String str, ``int` `n)  ` `{ ` `    ``int` `l = str.Length; ` `    ``for` `(``int` `x = 0; x < l; x += n) ` `    ``{ ` `        ``String newlist = str.Substring(x, n); ` ` `  `        ``// New array for every iteration ` `        ``List<``char``> arr = ``new` `List<``char``>(); ` `        ``foreach` `(``char` `y ``in` `newlist.ToCharArray())  ` `        ``{ ` ` `  `            ``// Check if the character is in the array ` `            ``if` `(!arr.Contains(y)) ` `                ``arr.Add(y); ` `        ``} ` `        ``foreach` `(``char` `y ``in` `arr) ` `            ``Console.Write(y); ` `        ``Console.WriteLine(); ` `    ``} ` `} ` ` `  `// Driver code ` `public` `static` `void` `Main(String[] args) ` `{ ` `    ``String str = ``"geeksforgeeksgfg"``; ` `    ``int` `n = 4; ` `    ``sub_segments(str, n); ` `} ` `} ` ` `  `// This code is contributed by Rajput-Ji `

Output:

```gek
sfor
gek
sgf
```

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.