When it changes, for example from 0 to 1, at the seperation line, count the most number of continuous 0's to the left and the most number of continuous 1's to the right, then take the minimum of the two. For example four 0's followed by three 1's will give us 3 candidate substrings. Then find all the seperation lines and sum up these minimum numbers. This will be the total number of qualified substrings

'''

```
def countBinarySubstrings(self, s):
if s is None or len(s) <= 1:
return 0
count = 0
n = len(s)
count_curr = 0
i = 0
while i < n:
count_prev = count_curr
count_curr = 1
i += 1
while i < n and s[i] == s[i - 1]:
count_curr += 1
i += 1
if i <= n:
count += min(count_prev, count_curr)
return count
```

'''