给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。
重复出现的子串要计算它们出现的次数。
题解:通过比较前后两个字符串中得到最小值,即前后两个字符串的子串
int countBinarySubstrings(string s)
{
int ptr = 0, n = s.size(), last = 0, len = 0;//last代表当前位置得前一位置
while(ptr < n)
{
char c = s[ptr];
int count = 0;
while (ptr < n && s[ptr] == c)
{
++ptr;
++count;
}
len += min(last, len);
last = count;
}
return len;
}