Flip String to Monotone Increasing - Problem

Imagine you have a binary string that needs to be organized like a perfect gradient - all the 0s should come first, followed by all the 1s. This is what we call a monotone increasing binary string.

You're given a binary string s containing only '0' and '1' characters. You can flip any character (change '0' to '1' or '1' to '0'), but each flip costs you one operation.

Goal: Find the minimum number of flips needed to make the string monotone increasing.

Examples:

  • "00110""00011" (1 flip: change middle '1' to '0')
  • "10""01" (1 flip: either flip first or second character)
  • "0101""0011" (1 flip: change second '1' to '0')

Input & Output

example_1.py — Basic case
$ Input: s = "00110"
Output: 1
💡 Note: We can flip the middle '1' at index 2 to '0' to get "00010", then it becomes monotone increasing. Only 1 flip needed.
example_2.py — Two choices
$ Input: s = "10"
Output: 1
💡 Note: Either flip the first character to get "00" or flip the second character to get "11". Both require 1 flip.
example_3.py — Multiple options
$ Input: s = "0101"
Output: 1
💡 Note: We can flip the '1' at index 1 to get "0001" (monotone increasing with 1 flip) or flip the '0' at index 2 to get "0111" (also 1 flip).

Constraints

  • 1 ≤ s.length ≤ 105
  • s[i] is either '0' or '1'
  • The string is non-empty

Visualization

Tap to expand
Bookshelf Organization AnalogyOriginal: Mixed books (Hardcover=1, Paperback=0)H1P0H1H1P0Goal: All Paperbacks first, then HardcoversPPHHHPaperbacksHardcoversAlgorithm: At each Paperback after Hardcovers• Option 1: Change this Paperback → Hardcover (cost = previous_cost + 1)• Option 2: Change all previous Hardcovers → Paperbacks (cost = hardcover_count)Choose minimum cost option - this greedy choice is optimal!
Understanding the Visualization
1
Scan the Shelf
Go through books left to right, keeping track of hardcovers seen
2
Decision at Each Paperback
When you find a paperback after hardcovers, decide: change this paperback to hardcover, or change all previous hardcovers to paperbacks
3
Greedy Choice
Always choose the option requiring fewer changes - this greedy choice is provably optimal
4
Final Result
The running minimum gives you the optimal solution
Key Takeaway
🎯 Key Insight: At each position containing '0' after seeing some '1's, we face a choice: flip this '0' or flip all previous '1's. The greedy strategy of always choosing the cheaper option leads to the globally optimal solution.
Asked in
Google 45 Meta 32 Amazon 28 Microsoft 22
67.5K Views
Medium-High Frequency
~18 min Avg. Time
2.8K Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen