在Python中进行一次0翻转后,在二进制字符串中查找最长子串长度为1的程序

假设我们有一个二进制字符串 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

猜你喜欢