# Examine if a personality is simply occurring as one single contiguous substring or not

Given string str of size N. The duty is to find out whether or not a personality is simply occurring as a single contiguous substring or not i.e., there shouldn’t exist every other alphabet characters in between two identical alphabets within the string.

Examples:

Enter: “aAa”
Output: False
Rationalization: There exists ‘A’ in between ‘a’ and ‘a’. Therefore “aa” turns into discontinuous.

Enter: “aaAAbbBB”
Output: True
Rationalization: Completely different segments fashioned from the given enter are “aa”, “AA”, “bb” and “BB” are all steady and haven’t any hurdles in between.

Method: To unravel the given drawback use the next concept:

Retailer the final prevalence of every character in Hash-Map in order that it may be in contrast with its earlier prevalence and discover the space between them. If this distance involves be greater than 1 then it’s discontinuous else steady.

Comply with the given steps to resolve the given drawback:

• Traverse string str (say i).
• If str[i] is current within the map
• If the distinction between the final prevalence and (i + 1) is equal to 1 then replace the final prevalence of the i-th character.
• Else return false.
• Else replace the final prevalence of i-th character within the Hash map as (i + 1).
• Return True after the loop is over.

Beneath is the implementation for the above strategy:

## C++14

 `#embrace ` `utilizing` `namespace` `std;` ` `  `bool` `isContinuous(string& temp)` `{` `    ` `    ` `    ``unordered_map<``char``, ``int``> last_Pos;` ` `  `    ``for` `(``int` `i = 0; i < temp.size(); i++) {` `        ` `        ` `        ``if` `(last_Pos[temp[i]]) {` `            ` `            ` `            ` `            ``if` `(i - last_Pos[temp[i]] + 1 <= 1) {` `                ``last_Pos[temp[i]] = i + 1;` `            ``}` `            ``else` `{` `                ``return` `0;` `            ``}` `        ``}` `        ``else` `{` `            ``last_Pos[temp[i]] = i + 1;` `        ``}` `    ``}` `    ``return` `1;` `}` ` `  `int` `principal()` `{` `    ``string str = ``"aaAAbbBB"``;` `    ``if` `(isContinuous(str)) {` `        ``cout << ``"True"``;` `    ``}` `    ``else` `{` `        ``cout << ``"False"``;` `    ``}` `    ``return` `0;` `}`

Time Complexity: O(N)
Auxiliary Area: O(N)