美文网首页
1513. 仅含 1 的子串数

1513. 仅含 1 的子串数

作者: 程序员小2 | 来源:发表于2023-01-04 22:01 被阅读0次

    题目:

    给你一个二进制字符串 s(仅由 '0' 和 '1' 组成的字符串)。

    返回所有字符都为 1 的子字符串的数目。

    由于答案可能很大,请你将它对 10^9 + 7 取模后返回。

    示例 1:

    输入:s = "0110111"
    输出:9
    解释:共有 9 个子字符串仅由 '1' 组成
    "1" -> 5 次
    "11" -> 3 次
    "111" -> 1 次
    示例 2:

    输入:s = "101"
    输出:2
    解释:子字符串 "1" 在 s 中共出现 2 次
    示例 3:

    输入:s = "111111"
    输出:21
    解释:每个子字符串都仅由 '1' 组成
    示例 4:

    输入:s = "000"
    输出:0

    提示:

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

    java代码:

    class Solution {
        public int numSub(String s) {
            final int MODULO = 1000000007;
            long total = 0;
            int length = s.length();
            long consecutive = 0;
            for (int i = 0; i < length; i++) {
                char c = s.charAt(i);
                if (c == '0') {
                    total += consecutive * (consecutive + 1) / 2;
                    total %= MODULO;
                    consecutive = 0;
                } else {
                    consecutive++;
                }
            }
            total += consecutive * (consecutive + 1) / 2;
            total %= MODULO;
            return (int) total;
        }
    }
    

    相关文章

      网友评论

          本文标题:1513. 仅含 1 的子串数

          本文链接:https://www.haomeiwen.com/subject/hfjdcdtx.html