在Python中查找交替二进制字符串所需的最小更改次数的程序

在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

  • 如果(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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程