
- Python Basic Tutorial
- Python - Home
- Python - Overview
- Python - Environment Setup
- Python - Basic Syntax
- Python - Comments
- Python - Variables
- Python - Data Types
- Python - Operators
- Python - Decision Making
- Python - Loops
- Python - Numbers
- Python - Strings
- Python - Lists
- Python - Tuples
- Python - Dictionary
- Python - Date & Time
- Python - Functions
- Python - Modules
- Python - Files I/O
- Python - Exceptions
Program to find minimum swaps needed to group all 1s together in Python
Suppose we have a binary string, we have to find the minimum number of swaps needed to group all 1’s together in any place in the string. So if the input is like "10101001101", then the output will be 3, as possible solution is "00000111111".
To solve this, we will follow these steps −
data := a list of bits from the given 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
Let us see the following implementation to get better understanding −
Example
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"))
Input
"10101001101"
Output
3
- Related Articles
- Program to count number of swaps required to group all 1s together in Python
- Minimum Swaps to Group All 1's Together in Python
- Program to find minimum number of swaps needed to arrange all pair of socks together in C++
- Minimum Swaps required to group all 1’s together in C++
- Program to group the 1s with minimum number of swaps in a given string in Python
- Program to find how many swaps needed to sort an array in Python
- Program to find minimum amount needed to be paid all good performers in Python
- Program to find minimum swaps required to make given anagram in python
- Minimum swaps required to bring all elements less than or equal to k together in C++
- Program to find minimum swaps to arrange a binary grid using Python
- Program to find minimum adjacent swaps for K consecutive ones in Python
- Program to find minimum element addition needed to get target sum in Python
- Program to find minimum number of rocketships needed for rescue in Python
- Program to find minimum costs needed to fill fruits in optimized way in Python
- Program to find minimum operations needed to make two arrays sum equal in Python
