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)