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())
posted @ 2020-12-15 15:26  童年の波鞋  阅读(179)  评论(0编辑  收藏  举报