给你一个长度为 n
下标从 0 开始的字符串 blocks
,blocks[i]
要么是 'W'
要么是 'B'
,表示第 i
块的颜色。字符 'W'
和 'B'
分别表示白色和黑色。
给你一个整数 k
,表示想要 连续 黑色块的数目。
每一次操作中,你可以选择一个白色块将它 涂成 黑色块。
请你返回至少出现 一次 连续 k
个黑色块的 最少 操作次数。
2379. 得到 K 个黑块的最少涂色次数 – 力扣(Leetcode)

思路:
固定长度的滑动窗口。
知识点:
滑动窗口算法-固定窗口:窗口的长度固定了,用指针进行滑动,指针指向窗口头,加上长度就是窗口尾。对字符串进行切片就可以逐步遍历所有字符了。
python3实现:
class Solution:
def minimumRecolors(self, blocks: str, k: int) -> int:
# 滑动窗口,窗口大小是k
len_blocks = len(blocks)
p = 0
result = []
while p+k <= len_blocks:
str_part = blocks[p:p+k]
count = str_part.count("W")
result.append(count)
p += 1
return min(result)
