【发布时间】:2019-11-21 03:35:13
【问题描述】:
给出一个长度为 N(最大为 10^5)的字符串,它只包含 0 和 1。我们必须从原始字符串中删除两个长度正好为 K 的子字符串,以最大化连续 1 的数量。
例如假设字符串是 1100110001 并且 K=1。
所以我们可以删除两个长度为 1 的子字符串。这里最好的选择是删除第 3 位和第 4 位的 0 并得到输出为 4(因为新字符串将是 11110001)
如果我尝试蛮力,它肯定会超时。我不知道滑动窗口是否可以工作。谁能给我任何关于如何进行的提示?显然,我并不要求完整的答案,只是一些提示对我有用。在此先感谢:)
【问题讨论】:
-
您能否更准确地说明您正在最大化什么?
-
@Scott Hunter 我正在最大化字符串中连续 1 的数量。通过删除第三个零(长度为 K(一个 rn)的子串)和第四个零,我可以获得最大编号。连续的 4 个。
-
所以你是在最大化 1 的最长不间断运行的长度吗? (确切地重申你已经说过的内容并不能帮助澄清任何事情。)
-
您可以通过前缀和在 O(n) 时间内完成此操作。
-
@scott Hunter 是的。连续的意思是
标签: string algorithm optimization brute-force sliding-window