g2901_3000.s2938_separate_black_and_white_balls.readme.md Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
2938\. Separate Black and White Balls
Medium
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_.
**Example 1:**
**Input:** s = "101"
**Output:** 1
**Explanation:** We can group all the black balls to the right in the following way:
- Swap s[0] and s[1], s = "011".
Initially, 1s are not grouped together, requiring at least 1 step to group them to the right.
**Example 2:**
**Input:** s = "100"
**Output:** 2
**Explanation:** We can group all the black balls to the right in the following way:
- Swap s[0] and s[1], s = "010".
- Swap s[1] and s[2], s = "001".
It can be proven that the minimum number of steps needed is 2.
**Example 3:**
**Input:** s = "0111"
**Output:** 0
**Explanation:** All the black balls are already grouped to the right.
**Constraints:**
* 1 <= n == s.length <= 105
* `s[i]` is either `'0'` or `'1'`.