【LeetCode】696 . 计数二进制子串

696 . 计数二进制子串(简单)



思路

  • 我们可以将字符串按照 0 和 1 的连续段分组,存在 count 数组中。例如 00111011 可以得到:count ={2,3,1,2}。
  • 这里 count 数组中两个相邻的数一定代表的是两种不同的字符。假设 count 数组中两个相的数字为或者它们对应着u个0和v个1,或者 u个1和v个0,那么它们能组成的满足条件的子数目为 min{u,v},即一对相邻的数字对答案的贡献。
  • 我们只要遍历所有相邻的数对,求它们的贡献总和,即可得到答案。

代码

cpp 复制代码
class Solution {
public:
    int countBinarySubstrings(string s) {
        int ans = 0, cur = 1;
        vector<int> count;
        for(int i = 0; i < s.size()-1; ++i) {
            if(s[i] == s[i+1]) {
                cur++;
            }else {
                count.push_back(cur);
                cur = 1;
            }
        }
        count.push_back(cur);
        for(int i = 0; i < count.size()-1; ++i) {
            ans += min(count[i], count[i+1]);
        }
        return ans;
    }
};
相关推荐
艾莉丝努力练剑10 分钟前
【C语言16天强化训练】从基础入门到进阶:Day 6
c语言·数据结构·学习·算法
快去睡觉~1 小时前
力扣1005:k次取反后最大化的数组和
数据结构·算法·leetcode
smilejingwei1 小时前
数据分析编程第二步: 最简单的数据分析尝试
数据库·算法·数据分析·esprocspl
草莓熊Lotso2 小时前
【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day10
c语言·开发语言·经验分享·算法·强化
张同学的IT技术日记2 小时前
详细实例说明+典型案例实现 对迭代法进行全面分析 | C++
算法
Coovally AI模型快速验证2 小时前
全景式综述|多模态目标跟踪全面解析:方法、数据、挑战与未来
人工智能·深度学习·算法·机器学习·计算机视觉·目标跟踪·无人机
草莓熊Lotso3 小时前
【C++】--函数参数传递:传值与传引用的深度解析
c语言·开发语言·c++·其他·算法
不知名。。。。。。。。3 小时前
算法 ----- 链式
算法
网易独家音乐人Mike Zhou3 小时前
【Python】圆柱体内部3D点云仿真及ply文件生成,圆形3D点云检测及拟合算法
stm32·单片机·mcu·物联网·算法·点云·iot
scx201310044 小时前
20250822 组题总结
c++·算法