b_zj_最大连续的相同字符子串的长度(双指针+找突破点)
仅包含’a’和’b’两种字符的字符串s,每次操作可以把一个’a’设置为’b’,或者把一个’b’置成’a’);问在有限的操作数范围m内,能够得到最大连续的相同字符的子串的长度是多少。
思路:变量a记录遇到的字符a的个数,变量b记录遇到的字符b的个数;我们有m次机会,也就是说只要当前子串s[0:i]只要a/b其中之一不超过m个,我们就有能力变为连续相同字符
def solve():
n,m=map(int, input().split())
s=input()
l,r,ans=0,0,1
a,b=0,0
while r<n:
if s[r]=='a': a+=1
else: b+=1
if a>m and b>m:
if s[l]=='a': a-=1
else: b-=1
l+=1
ans=max(ans,r-l+1)
r+=1
return ans
print(solve())