# Count of all unique substrings with non-repeating characters

Given a string str consisting of lowercase characters, the task is to find the total numbers of unique substrings with non-repeating characters.

Examples:

Input: str = “abba”
Output: 4
Explanation:
There are 4 unique substrings. They are: “a”, “ab”, “b”, “ba”.

Input: str = “acbacbacaa”
Output: 10

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

Approach: The idea is to iterate over all the substrings. For every substring, check whether each particular character has previously occurred or not. If so, then increase the count of required substrings. In the end return this count as count of all unique substrings with non-repeating characters.

Below is the implementation of the above approach:

## CPP

 `// C++ program to find the count of ` `// all unique sub-strings with ` `// non-repeating characters ` ` `  `#include ` `using` `namespace` `std; ` ` `  `// Function to count all unique ` `// distinct character substrings ` `int` `distinctSubstring(string& P, ``int` `N) ` `{ ` `    ``// Hashmap to store all substrings ` `    ``unordered_set S; ` ` `  `    ``// Iterate over all the substrings ` `    ``for` `(``int` `i = 0; i < N; ++i) { ` ` `  `        ``// Boolean array to maintain all ` `        ``// characters encountered so far ` `        ``vector<``bool``> freq(26, ``false``); ` ` `  `        ``// Variable to maintain the ` `        ``// substring till current position ` `        ``string s; ` ` `  `        ``for` `(``int` `j = i; j < N; ++j) { ` ` `  `            ``// Get the position of the ` `            ``// character in the string ` `            ``int` `pos = P[j] - ``'a'``; ` ` `  `            ``// Check if the character is ` `            ``// encountred ` `            ``if` `(freq[pos] == ``true``) ` `                ``break``; ` ` `  `            ``freq[pos] = ``true``; ` ` `  `            ``// Add the current character ` `            ``// to the substring ` `            ``s += P[j]; ` ` `  `            ``// Insert substring in Hashmap ` `            ``S.insert(s); ` `        ``} ` `    ``} ` ` `  `    ``return` `S.size(); ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``string S = ``"abba"``; ` `    ``int` `N = S.length(); ` ` `  `    ``cout << distinctSubstring(S, N); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java program to find the count of ` `// all unique sub-Strings with ` `// non-repeating characters ` `import` `java.util.*; ` ` `  `class` `GFG{ ` `  `  `// Function to count all unique ` `// distinct character subStrings ` `static` `int` `distinctSubString(String P, ``int` `N) ` `{ ` `    ``// Hashmap to store all subStrings ` `    ``HashSet S = ``new` `HashSet(); ` `  `  `    ``// Iterate over all the subStrings ` `    ``for` `(``int` `i = ``0``; i < N; ++i) { ` `  `  `        ``// Boolean array to maintain all ` `        ``// characters encountered so far ` `        ``boolean` `[]freq = ``new` `boolean``[``26``]; ` `  `  `        ``// Variable to maintain the ` `        ``// subString till current position ` `        ``String s = ``""``; ` `  `  `        ``for` `(``int` `j = i; j < N; ++j) { ` `  `  `            ``// Get the position of the ` `            ``// character in the String ` `            ``int` `pos = P.charAt(j) - ``'a'``; ` `  `  `            ``// Check if the character is ` `            ``// encountred ` `            ``if` `(freq[pos] == ``true``) ` `                ``break``; ` `  `  `            ``freq[pos] = ``true``; ` `  `  `            ``// Add the current character ` `            ``// to the subString ` `            ``s += P.charAt(j); ` `  `  `            ``// Insert subString in Hashmap ` `            ``S.add(s); ` `        ``} ` `    ``} ` `  `  `    ``return` `S.size(); ` `} ` `  `  `// Driver code ` `public` `static` `void` `main(String[] args) ` `{ ` `    ``String S = ``"abba"``; ` `    ``int` `N = S.length(); ` `  `  `    ``System.out.print(distinctSubString(S, N));  ` `} ` `} ` ` `  `// This code is contributed by Rajput-Ji `

## Python3

 `# Python3 program to find the count of ` `# all unique sub-strings with ` `# non-repeating characters ` ` `  `# Function to count all unique ` `# distinct character substrings ` `def` `distinctSubstring(P, N): ` `     `  `    ``# Hashmap to store all substrings ` `    ``S ``=` `dict``() ` ` `  `    ``# Iterate over all the substrings ` `    ``for` `i ``in` `range``(N): ` ` `  `        ``# Boolean array to maintain all ` `        ``# characters encountered so far ` `        ``freq ``=` `[``False``]``*``26` ` `  `        ``# Variable to maintain the ` `        ``# subtill current position ` `        ``s ``=` `"" ` ` `  `        ``for` `j ``in` `range``(i,N): ` ` `  `            ``# Get the position of the ` `            ``# character in the string ` `            ``pos ``=` `ord``(P[j]) ``-` `ord``(``'a'``) ` ` `  `            ``# Check if the character is ` `            ``# encountred ` `            ``if` `(freq[pos] ``=``=` `True``): ` `                ``break` ` `  `            ``freq[pos] ``=` `True` ` `  `            ``# Add the current character ` `            ``# to the substring ` `            ``s ``+``=` `P[j] ` ` `  `            ``# Insert subin Hashmap ` `            ``S[s] ``=` `1` ` `  `    ``return` `len``(S) ` ` `  `# Driver code ` `S ``=` `"abba"` `N ``=` `len``(S) ` ` `  `print``(distinctSubstring(S, N)) ` ` `  `# This code is contributed by mohit kumar 29     `

## C#

 `// C# program to find the count of ` `// all unique sub-Strings with ` `// non-repeating characters ` `using` `System; ` `using` `System.Collections.Generic; ` ` `  `class` `GFG{ ` `   `  `// Function to count all unique ` `// distinct character subStrings ` `static` `int` `distinctSubString(String P, ``int` `N) ` `{ ` `    ``// Hashmap to store all subStrings ` `    ``HashSet S = ``new` `HashSet(); ` `   `  `    ``// Iterate over all the subStrings ` `    ``for` `(``int` `i = 0; i < N; ++i) { ` `   `  `        ``// Boolean array to maintain all ` `        ``// characters encountered so far ` `        ``bool` `[]freq = ``new` `bool``; ` `   `  `        ``// Variable to maintain the ` `        ``// subString till current position ` `        ``String s = ``""``; ` `   `  `        ``for` `(``int` `j = i; j < N; ++j) { ` `   `  `            ``// Get the position of the ` `            ``// character in the String ` `            ``int` `pos = P[j] - ``'a'``; ` `   `  `            ``// Check if the character is ` `            ``// encountred ` `            ``if` `(freq[pos] == ``true``) ` `                ``break``; ` `   `  `            ``freq[pos] = ``true``; ` `   `  `            ``// Add the current character ` `            ``// to the subString ` `            ``s += P[j]; ` `   `  `            ``// Insert subString in Hashmap ` `            ``S.Add(s); ` `        ``} ` `    ``}   ` `    ``return` `S.Count; ` `} ` `   `  `// Driver code ` `public` `static` `void` `Main(String[] args) ` `{ ` `    ``String S = ``"abba"``; ` `    ``int` `N = S.Length; ` `   `  `    ``Console.Write(distinctSubString(S, N));  ` `} ` `} ` ` `  `// This code is contributed by Rajput-Ji `

Output:

```4
```

Time Complexity: O(N2) where N is the length of the string.

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.

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 : mohit kumar 29, Rajput-Ji