原文链接: 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% |
提交历史
提交时间 | 提交结果 | 执行时间 | 内存消耗 | 语言 |
---|