在 Python 中计算移除连续相同位所需要的操作数的程序
假设我们有一个二进制字符串 s,那么让我们考虑一个操作,其中我们选择一个位并将其值从 0 翻转到 1 或从 1 翻转到 0。我们必须找到获得不含连续三个相同位的字符串所需的最小操作数。
因此,如果输入类似于 s = "10011100",则输出将为 1,因为我们可以将索引 4 处的位 1 翻转为 0 以使字符串 "10010100" 不含连续三个相同位。
要解决这个问题,我们将按照以下步骤操作 −
- l := 0,计数 := 0
- 当 l < s 的大小时,执行
- r := l
- 当 r < s 的大小且 s[r] 与 s[l] 相同时,执行
- r := r + 1
- 计数 := 计数 + ((r - l)/ 3) 的下取整
- l := r
- 返回计数
示例
让我们看看以下实现以更好地理解 −
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
广告