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