Problem
There are n
balls on a table, each ball has a color black or white.
You are given a 0-indexed binary string s
of length n
, where 1
and 0
represent black and white balls, respectively.
In each step, you can choose two adjacent balls and swap them.
Return the minimum number of steps to group all the black balls to the right and all the white balls to the left.
Examples
Example 1:
|
|
Example 2:
|
|
Example 3:
|
|
Solution
Method 1 - Two Pointer Technique
The key insight is to count how many black balls (1
) we have encountered so far. Every time we encounter a white ball (0
), it should be swapped with the black balls(1
) we had encountered on its left. The total number of swaps required is the sum of these individual swaps, ensuring all black balls(1
) are moved to the right and all white balls(0
) to the left.
Here is the approach:
- We count how many black balls (
1
) we have encountered so far withones
- Every time we encounter a white ball (
0
), it needs to be swapped with the black balls (1
) that are on its left. - The total number of swaps is the sum of the
swaps
for every black ball (1
) we encounter.
Video explanation
Here is the video explaining this method in detail. Please check it out:
Code
|
|
|
|
Complexity
- ⏰ Time complexity:
O(n)
- 🧺 Space complexity:
O(1)