分析
每次l和r前进一个
分析头和尾的元素,来得到当前窗口中最少的个数即可
Ac code
for t in range(int(input())):n, k = list(map(int, input().split()))s = input()cntW = 0ans = 0xfffffffffor i in range(k):if s[i] == 'W':cntW += 1ans = min(ans, cntW)for i in range(k, n):if s[i] == 'W' and s[i - k] == 'W':passelif s[i] == 'W' and s[i - k] == 'B':cntW += 1elif s[i] == 'B' and s[i - k] == 'W':cntW -= 1elif s[i] == 'B' and s[i - k] == 'B':passans = min(ans, cntW)print(ans)
总结
思维转换 + 滑动窗口