小慕正在管理一个由魔法水晶块组成的“内存之域”,这些水晶块被划分为若干个 相同大小 的区块。每个区块要么是空闲的,可以注入魔力,要么已经被其他项目占用。 小慕用一串字符 `` 来记录每个水晶块的状态,其中: - `'.'` 表示该水晶块是空闲的; - `'x'` 表示该水晶块已被占用(所有占用统一用 `x` 表示); 小慕拥有释放魔法的能力,他最多可以释放其中 `` 个被占用的水晶块,使它们变为空闲状态(即 `'x'` 变成 `'.'`)。 现在,他希望通过最多释放 `cnt` 个水晶块,获得一段 的最大长度的水晶块区域。 你的任务是帮助小慕计算,在最优释放方案下,最多能获得多少块连续空闲的水晶。
提示:带虚线的词点一下有通俗解释。
输入描述
输入包含两行: 第一行一个字符串 `memory`,表示初始的水晶块状态,仅包含字符 `'.'` 和 `'x'`,字符串长度满足 `1 <= len(memory) <= 10^5`。 第二行一个整数 `cnt`,表示最多可以释放的水晶块数,满足 `0 <= cnt <= len(memory)`。
输出描述
输出一个整数,表示通过最多释放 `cnt` 块被占用的水晶后,可以获得的最长连续空闲魔法水晶块数量。
示例
示例 1
输入
..x..x..xx... 2
输出
8
说明:对字符串 `memory = "..x..x..xx..."`: - 若释放第 3 和第 6 个水晶块(即将 `memory[2]` 与 `memory[5]` 从 `'x'` 变为 `'.'`), 则得到从 `memory[0]` 到 `memory[7]` 的连续空闲区域,总长度为 `8`。 - 其他释放方式所得最大连续空闲长度都不超过 `8`。 因此输出为 `8`。
时间限制 1000 ms · 内存限制 128 MB