classSolution: defmaxRepOpt1(self, text: str) -> int: grap = [[c,len(list(v))] for c,v in itertools.groupby(text)] num = collections.Counter(text) res = max(min(k+1,num[c])for c,k in grap) for i in range(1,len(grap)): if grap[i][1]==1and i+1 != len(grap) and grap[i-1][0]==grap[i+1][0]: res = max(res,min(grap[i-1][1]+grap[i+1][1]+1,num[grap[i-1][0]])) return res