在Python中编写计算所需交换所有1以进行分组的程序
假设我们有一个二进制字符串,我们可以交换任意两位。我们必须找到分组所有1所需的最小交换次数。
那么,如果输入为s =“0111001”,则输出将为1,因为我们可以执行这些交换:0111001-> 1111000。
要解决这个问题,我们将遵循以下步骤:
- data:获取给定二进制字符串中0和1的列表
- set one := 0,n:数据数组的长度
- 制作大小为n的summ数组,并用0填充它,将summ [0]设置为data [0]
- one := one + data [0]
- for i in range 1 to n-1
- summ[i] := summ[i-1] + data[i]
- one := one + data[i]
- ans := one
- left := 0,right := one-1
- while right
- 如果left为0,则temp:= summ [right],否则temp:= summ [right] – summ [left-1]
- ans := ans,one-temp的最小值
- increase right and left by 1
- return ans
例子(Python)
让我们看下面的实现以获得更好的理解−