思路:
- 我们可以将字符串s按照 0 和 1 的连续段分组,“00110011"就可以压缩成"0101”,同时记录每一位的连续的值。
- 然后我们将压缩完的字符串每相邻两位进行对比,将小的数字与答案值相加。
代码:
class Solution {
public:
vector<int> cnt;
int countBinarySubstrings(string s) {
int con=0;
int ans=0;
if(s.size()==0)
return 0;
for(int i=0;i<=s.size()-1;i++){
con++;
if(s[i]!=s[i+1])
{
cnt.push_back(con);
con=0;
}
}
for(int i=0;i<cnt.size()-1;i++)
{
ans+=min(cnt[i],cnt[i+1]);
}
return ans;
}
};