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 another 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 shaped from the given enter are “aa”, “AA”, “bb” and “BB” are all steady and don’t have any hurdles in between.
Strategy: To unravel the given drawback use the next concept:
Retailer the final incidence of every character in Hash-Map in order that it may be in contrast with its earlier incidence 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 incidence and (i + 1) is equal to 1 then replace the final incidence of the i-th character.
- Else return false.
- Else replace the final incidence 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 method:
C++14
|
Time Complexity: O(N)
Auxiliary House: O(N)