该程序计算在Python中将所有1组合在一起所需的交换次数

假设我们有一个二进制字符串,并且我们可以交换任意两位。我们必须找到将所有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 <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


猜你喜欢