假设我们有一个二进制字符串 s。我们最多可以将一个“0”翻转为“1”,我们必须找到最长连续子串的长度 1。
所以,如果输入像 s = "1010110001",那么输出将是 4,就好像我们翻转索引 3 处的零,然后我们得到字符串 "1011110001",这里 1s 的最长子串的长度是 4 .
让我们看看以下实现以获得更好的理解 -
def solve(s): n = len(s) ans = ones = left = right = 0 while right < n: if s[right] == "1": ones += 1 while right - left + 1 - ones > 1: remove = s[left] if remove == "1": ones -= 1 left += 1 ans = max(ans, right - left + 1) right += 1 return ans s = "1010110001" print(solve(s))
"1010110001"输出结果
4