基本思路:
找到0和1相接的地方,以此为基础向两边扩散。
如
00110011
我们先找到 下标为1 和 2 的地方 此时为 0和1 相接的地方,将结果Res+1;
将1-1,2+1发现下标为0的地方等于下标为1的地方,下标为2的地方等于下标为3的地方。那么Res+1;
一以此类推即可。
AC解:
class Solution {
public:
int countBinarySubstrings(string s) {
int Len = s.size(),Res=0;
for (int i = 0; i < Len - 1; i++)
{
if (s[i] != s[i + 1])
{
Res++;
int l = i, r = i;
while (true)
{
if (l > 0 && s[l - 1] == s[i] && r < Len - 2 && s[i + 1] == s[r + 2])
{
Res++;
r++;
l--;
}
else break;
}
}
}
return Res;
}
};