Count Binary Substrings
Count substrings with equal number of consecutive 0s and 1s (like "0011","10","01","1100").
Example 1
Input: s="00110011" → Output: 6
Example 2
Input: s="10101" → Output: 4
Solution Approach
Track previous group size and current group size. When group changes, pairs available = min(prev, curr).
- Track prev (previous group length) and curr (current group length)
- When character changes: add min(prev,curr) to count, prev=curr, curr=1
- Otherwise curr++
- Return count
Java
public int countBinarySubstrings(String s) {
int prev = 0, curr = 1, count = 0;
for (int i = 1; i < s.length(); i++) {
if (s.charAt(i) == s.charAt(i-1)) curr++;
else { prev = curr; curr = 1; }
if (prev >= curr) count++;
}
return count;
}
- Time Complexity: O(n)
- Space Complexity: O(1)