第一行两个整数 n , m (1<=m<=n<=50000),第二行为长度为n且只包含’a’和’b’的字符串s。
输出在操作次数不超过 m 的情况下,能够得到的 最大连续 全’a’子串或全’b’子串的长度。
8 1 aabaabaa
5
把第一个 'b' 或者第二个 'b' 置成 'a',可得到长度为 5 的全 'a' 子串。
res = 0 indexa,indexb=[],[] for i in range(n): if string[i]=='a': indexa.append(i) else: indexb.append(i) for i in range(2): if i==0: arrs = indexa else: arrs = indexb if len(arrs)<=m: res = n break for j in range(len(arrs)-m-1): tmp = arrs[j+m+1]-arrs[j]-1 res = max(res,tmp) res = max(res,arrs[m]) res = max(res,n-1-arrs[-(m+1)]) print(res)两种字符的转换可以直接分两种情况讨论,a->b或b->a。先保存下a与b的下标,随后分三种情况讨论:中间段;0到arrs[m];arrs[-(m+1)]到n-1。取三种情况的最大值就是最终结果。