696. 计数二进制子串

题目

696. 计数二进制子串

696. 计数二进制子串

我的思路

满足要求的子串一定出现在0-1或者1-0变化的位置
所以记录每两次变化之间单一字符的数量即可。

我的实现

class Solution {
public:
    int countBinarySubstrings(string s) {
        int preCount = 0;
        int Count = 0;
        int result = 0;
        int pos = 0;
        int length = s.size();
        while(pos<length-1){
            if(s[pos+1]!=s[pos]){
                ++Count;
                result+=Count>preCount?preCount:Count;
                preCount = Count;
                Count = 0;
            }else{
                ++Count;
            }
           ++pos;
        }
        if(pos>0){
            if(s[pos]!=s[pos-1]){
                result+=1;
            }else{
                ++Count;
                result+=Count>preCount?preCount:Count;
            }
        }
        
        return result;
    }
};
/*
满足要求的子串一定出现在0-1或者1-0变化的位置
所以记录每两次变化之间单一字符的数量即可。
*/

拓展学习