在Python中查找替换一个比特位对后最长的1的数量的程序

在Python中查找替换一个比特位对后最长的1的数量的程序

假设我们有一个二进制字符串s。如果我们可以交换字符串中至多一个字符对,我们必须找到最长连续1的结果长度。

因此,如果输入为s =“1111011111”,则输出将为9,因为我们可以交换s [4]和s [9]以获得9个连续的1。

要解决此问题,我们将遵循以下步骤:

  • l:=0,cnt:=0,ans:=0
  • 对于r的范围从0到s的大小,依此执行以下操作:
    • 当s [r]与“0”相同时,cnt:=cnt +1,否则为0
    • 如果cnt> 1,则
      • 当s [l]与“0”相同时,cnt:=cnt-1,否则为0
      • l:=l +1;
    • ans:= ans和(r-l + 1)的最大值
  • 返回ans和s中1的数量的最小值

以下是更好的理解实现的示例:

更多Python相关文章,请阅读:Python 教程

示例

class Solution:
  def solve(self, s):
      l = 0
      cnt = 0
      ans = 0
      for r in range(len(s)):
         cnt += s[r] == "0"
         if cnt > 1:
            cnt -= s[l] == "0"
            l += 1
         ans = max(ans, r - l + 1)
      return min(ans, s.count("1"))
ob = Solution()
s = "1111011111"
print(ob.solve(s))

输入

”1111011111“

输出

9

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程