加载中...
1513-仅含 1 的子串数(Number of Substrings With Only 1s)
发表于:2021-12-03 | 分类: 中等
字数统计: 461 | 阅读时长: 2分钟 | 阅读量:

原文链接: https://leetcode-cn.com/problems/number-of-substrings-with-only-1s

英文原文

Given a binary string s, return the number of substrings with all characters 1's. Since the answer may be too large, return it modulo 109 + 7.

 

Example 1:

Input: s = "0110111"
Output: 9
Explanation: There are 9 substring in total with only 1's characters.
"1" -> 5 times.
"11" -> 3 times.
"111" -> 1 time.

Example 2:

Input: s = "101"
Output: 2
Explanation: Substring "1" is shown 2 times in s.

Example 3:

Input: s = "111111"
Output: 21
Explanation: Each substring contains only 1's characters.

Example 4:

Input: s = "000"
Output: 0

 

Constraints:

  • 1 <= s.length <= 105
  • s[i] is either '0' or '1'.

中文题目

给你一个二进制字符串 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

通过代码

高赞题解

class Solution {
public:
    int numSub(string s) {
        int res = 0, cnt = 0;
        int mod = pow(10,9) + 7;

        for(char c: s){
            if(c=='1'){
                ++cnt;
                res = (res + cnt) % mod;
            } 
            else cnt = 0;
        }

        return res;
    }
};

统计信息

通过次数 提交次数 AC比率
11332 29698 38.2%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言
上一篇:
1512-好数对的数目(Number of Good Pairs)
下一篇:
1531-压缩字符串 II(String Compression II)
本文目录
本文目录