This is an easy level leetcode problem, which you can use stack to solve.
Please refer to this link for more detail of the problem.
Essentially, you cannot accept 3 or more consecutive duplicate letters. There could be many ways but using a stack seems to be the most elegant approach. Basically, you accumulate each letter if it doesn’t match with the top two entries in the stack or stack has less than 2 elements. This way, you are only accumulating letters that are not duplicate of 3 or more consecutive characters.
class Solution:
def makeFancyString(self, s: str) -> str:
fancy = []
for letter in s:
if len(fancy) < 2 or fancy[-1] != letter or fancy[-2] != letter:
fancy.append(letter)
return "".join(fancy)