假设我们有一个二进制字符串,并且我们可以交换任意两位。我们必须找到将所有1组合在一起所需的最小交换次数。
因此,如果输入类似于s =“ 0111001”,则输出将为1,因为我们可以执行以下交换:0111001-> 1111000。
范例(Python)
让我们看下面的实现以更好地理解-class Solution(object):
def solve(self, s):
data = list(map(int, list(s)))
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
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()
s = "0111001"
print(ob.solve(s))
输入值"0111001"
输出结果1