题目大意
有一个仅包含 . 和 X 的字符串,最多替换 kkk 的 . 为 X ,问最多能使多少个 X 连续。
解题思路
本体可以使用双指针或二分答案。
考虑双指针,优先滑动右端点 rrr ,记录区间内 . 的数量,当数量大于 kkk 时,移动左端点 lll 直至区间内 . 的数量小于等于 kkk 。时间复杂度为 O(n)O(n)O(n) 。
考虑二分,我们可以用前缀和维护 X 的数量,二分求区间长度,遍历是否可以构成长度为 midmidmid 的字串即可。时间复杂度为 O(nlogn)O(n\log n)O(nlogn)
参考答案
方法一:双指针
方法二:二分