在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

以上是 在Python中进行一次0翻转后,在二进制字符串中查找最长子串长度为1的程序 的全部内容, 来源链接: utcz.com/z/358893.html

回到顶部