Microsoft Online Assessment (OA) - Longest Semi-Alternating Substring

Given a string S containing only characters a and b. A substring (contiguous fragment) of S is called a semi-alternating substring if it does not contain three identical consecutive characters. In other words, it does not contain either 'aaa' or 'bbb' substrings. Note that the whole S is its own substring.

Example 1:

Input: baaabbabbb

Output: 7

Explanation:

the longest semi-alternating substring is aabbabb

Example 2:

Input: babba

Output: 5

Explanation:

Whole S is semi-alternating.

Example 3:

Input: abaaaa

Output: 4

Explanation:

The first four letters of S create a semi-alternating substring.

Try it yourself

Implementation

1def semi_substring(s: str) -> int:
2    max_len = 0
3    left = 0
4    for right in range(len(s)):
5        if right - left + 1 >= 3 and s[right] == s[right - 1] == s[right - 2]:
6            left = right - 1
7        max_len = max(max_len, right - left + 1)
8    return max_len
9
10if __name__ == '__main__':
11    s = input()
12    res = semi_substring(s)
13    print(res)
14