在Python中查找交替二进制字符串所需的最小更改次数的程序
假设我们有一个二进制字符串s。 让我们考虑一个操作,我们可以翻转一个位。如果没有相邻的字符相同,则字符串s称为交替字符串。我们必须找到使s交替所需的最小操作次数。
因此,如果输入类似于s =“11100011”,那么输出将是3,因为如果我们在位置1,4和7翻转位,那么它将是“10101010”,然后都是交替的。
要解决这个问题,我们将按照以下步骤进行−
- 更改:= 0
-
even_1:= 0,even_0:= 0
-
odd_1:= 0,odd_0:= 0
-
对于i从0到s大小-1,执行以下操作
- 如果i是偶数,那么
- 如果s [i]与’1’相同,则
-
even_1:= even_1 + 1
-
否则,
-
even_0:= even_0 + 1
-
否则,
- 如果s [i]与’1’相同,则
-
odd_1:= odd_1 + 1
-
否则,
-
odd_0:= odd_0 + 1
- 如果i是偶数,那么
-
如果(even_1 + odd_0)>(even_0 + odd_1),那么
- 更改:= even_0 + odd_1
- 否则,
- 更改:= even_1 + odd_0
- 返回更改
例(Python)
让我们看下面的实现,以便更好地理解 &minnus;
def solve(s):
change = 0
even_1 = 0
even_0 = 0
odd_1 = 0
odd_0 = 0
for i in range(len(s)):
if(i%2 == 0):
if(s[i]=='1'):
even_1 +=1
else:
even_0 +=1
else:
if(s[i] == '1'):
odd_1 +=1
else:
odd_0 +=1
if((even_1+odd_0)>(even_0+odd_1)):
change = even_0 + odd_1
else:
change = even_1 + odd_0
return change
s = "11100011"
print(solve(s))
输入
"11100011"
##
3