在Python中计算移除连续相同位的最少操作次数的程序

在Python中计算移除连续相同位的最少操作次数的程序

假设我们有一个二进制字符串s,现在让我们考虑一种操作,我们选择一位并将其值从0翻转为1或从1翻转为0。我们必须找到需要进行的最少操作数,以获得没有三个相同连续位的字符串。

因此,如果输入为s = “10011100”,则输出将为1,因为我们可以翻转位于索引4的1到0的位,以使字符串“10010100”没有三个连续的相同位。

要解决这个问题,我们将遵循以下步骤 −

  • l := 0, count := 0
  • while l < size of s, do
    • r := l
    • while r < size of s and s[r] is same as s[l], do
      • r := r + 1
    • count := count + floor of ((r – l) / 3)
    • l := r
  • return count

示例

让我们看一下以下实现以更好地理解−

def solve(s):
   l = 0
   count = 0
   while l < len(s):
      r = l
      while r < len(s) and s[r] == s[l]:
         r += 1
      count += (r - l) // 3
      l = r
   return count

s = "10011100"
print(solve(s))

输入

"10011100"

输出

1

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程