在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