Syntax error Program to count number of swaps required to group all 1s together in Python

Program to count number of swaps required to group all 1s together in Python



Suppose we have a binary string, and we can swap any two bits. We have to find the minimum number of swaps required to group all 1s together.

So, if the input is like s = "0111001", then the output will be 1, as We can perform these swaps: 0111001 -> 1111000.

To solve this, we will follow these steps −

  • data := a list of 0s and 1s from the given binary string
  • set one := 0, n:= length of data array
  • make an array summ of size n, and fill this with 0, set 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 < n
    • if left is 0, then temp := summ[right], otherwise temp := summ[right] – summ[left - 1]
    • ans := minimum of ans, one – temp
    • increase right and left by 1
  • return ans

Example (Python)

Let us see the following implementation to get better understanding −

 Live Demo

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))

Input

"0111001"

Output

1
Updated on: 2020-12-12T09:37:51+05:30

167 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements