Python程序:查找使二进制字符串交替所需的最小更改次数
假设我们有一个二进制字符串s。我们考虑一个可以翻转一位的操作。如果字符串s中没有两个相邻字符相同,则称s为交替字符串。我们必须找到使s变为交替字符串所需的最小操作次数。
因此,如果输入类似于s = "11100011",则输出将为3,因为如果我们翻转位置1、4和7处的位,则它将变为"10101010",然后所有位都是交替的。
为了解决这个问题,我们将遵循以下步骤:
change := 0
even_1 := 0, even_0 := 0
odd_1 := 0, odd_0 := 0
对于范围从0到s的大小-1的i,执行:
如果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),则:
change := even_0 + odd_1
否则:
change := even_1 + odd_0
返回change
示例(Python)
让我们看看下面的实现以更好地理解;
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
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP