程序查找在Python中将所有1组合在一起所需的最小交换
假设我们有一个二进制字符串,我们必须找到在字符串的任何位置将所有1组合在一起的最小交换次数。因此,如果输入类似于“10101001101”,那么输出将为3,可能的解决方案是“00000111111”。
为了解决这个问题,我们将遵循以下步骤-
data:=给定字符串的位列表
设置一个:=0,n:=数据数组的长度
设置大小为n的数组总和,并用0填充,设置summ[0]:=data[0]
一:=一+数据[0]
当我在1到n–1的范围内时
summ[i]:=summ[i-1]+data[i]
一个:=一个+数据[i]
回答:=一个
左:=0,右:=1–1
而右<n
如果left为0,则temp:=summ[right],否则temp:=summ[right]–
summ[左-1]
ans:=ans的最小值,一个–temp
左右增加1
返回ans
让我们看下面的实现以更好地理解-
示例
class Solution(object):
def solve(self, data):
data = list(map(int, list(data)))
one = 0
n = len(data)
summ=[0 for i in range(n)]
summ[0] = data[0]
one += data[0]
for i in range(1,n):
summ[i] += summ[i-1]+data[i]
one += data[i]
ans = one
left = 0
right = one-1
while right <n:
if left == 0:
temp = summ[right]
else:
temp = summ[right] - summ[left-1]
ans = min(ans,one-temp)
right+=1
left+=1
return ans
ob = Solution()print(ob.solve("10101001101"))输入值
"10101001101"
输出结果
3