用 Python 编写一个程序来计算删除连续相同位的操作数

pythonserver side programmingprogramming更新于 2026/1/3 8:44:17

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

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

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

  • l := 0, count := 0
  • while l < s 的大小,执行
    • r := l
    • 当 r < s 的大小且 s[r] 与 s[l] 相同时,执行
      • r := r + 1
    • count := count + floor of ((r - l) / 3)
    • l := r
  • 返回 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

相关文章


有用资源