0
点赞
收藏
分享

微信扫一扫

Leetcode-1513. 仅含 1 的子串数

jjt二向箔 2022-03-11 阅读 37

链接

1513. 仅含 1 的子串数

题目

示例

说明

  • s[i] == '0' 或 s[i] == '1'
  • 1 <= s.length <= 10^5

思路

遍历字符串,以0为分隔符,统计每段连续1的个数,连续1的长度决定子集个数,公式为n(1+n)/2,将每一段的子集个数加起来即可。

C++ Code

class Solution {
public:
    int numSub(string s) {
        //以0位分割符 统计连续1的长度
        long int count=0;
        int i=0;
        while(i<s.size())
        {
            while(i<s.size() && s[i]=='0') i++;
            long int N=0;
            while(i<s.size() && s[i]=='1')
            {
                 i++; N++;
            }
            count+=(N+N*N)/2;
        }
        return count%(1000000007);
    }
};
举报

相关推荐

0 条评论