LeetCode 1156 需要通过观察找出规律

思路:本题如果要实现字符串长度增长,只需要考虑两种场景。

  1. aaabaaa,对于b,左和右相等,这时候,总长度是len(left)+len(right)+int(total(a)>current(a))
  2. aaabba,对于a,长度为len(a)+int(total(a)>current(a))

因此,代码如下

1
2
3
4
5
6
7
8
9
class Solution:
def maxRepOpt1(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]==1 and 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