力扣每日一题:仅含1的子串数

给定一个只含有0和1的字符串,要求求其中所有由1构成的子串的个数。

思路:

假设当前从[l,r]均是1,那么新加入一个1,新加的子串可以认为是新加的1单独构成,以及和前面[l,r]的1构成,即如果[l,r]的长度为len,则新加一个1,新构成的子串的个数为len+1。因此,只需要找到每一个从1开始的字符串,按照上面的规律进行计算即可。

复制代码
class Solution {
public:
    int numSub(string s) {
        long long ans=0;
        const int mod=1e9+7;//防止超出int范围
        int len=0;//用于保存当前全是1的字符串的总长度
        for(int i=0;i<s.size();i++)
        {
           if(s[i]=='1')
           { 
            len++;
            ans=ans+len;
           }
           else
           {
             len=0;
           }
        }
        return ans%mod;
    }
};
相关推荐
闻缺陷则喜何志丹2 小时前
【模拟】P9670 [ICPC 2022 Jinan R] Frozen Scoreboard|普及+
c++·算法·模拟·洛谷
永远都不秃头的程序员(互关)2 小时前
【K-Means深度探索(十一)】K-Means VS 其他聚类算法:如何选择最合适的工具?
算法·kmeans·聚类
洛生&2 小时前
Nested Ranges Count
算法
老鼠只爱大米2 小时前
LeetCode经典算法面试题 #142:环形链表 II(哈希表、快慢指针等多种方法详细解析)
算法·leetcode·链表·快慢指针·floyd算法·环形链表
数智工坊2 小时前
【操作系统-线程介绍】
linux·算法·ubuntu
小龙报2 小时前
【C语言进阶数据结构与算法】LeetCode27 && LeetCode88顺序表练习:1.移除元素 2.合并两个有序数组
c语言·开发语言·数据结构·c++·算法·链表·visual studio
炽烈小老头2 小时前
【每天学习一点算法 2026/01/21】倒二进制位
学习·算法
努力学算法的蒟蒻2 小时前
day62(1.21)——leetcode面试经典150
面试·职场和发展
辰阳星宇2 小时前
【工具调用】工具调用后训练参数设计方案总结
人工智能·算法·自然语言处理
范纹杉想快点毕业2 小时前
C语言查找算法对比分析
数据结构·算法