Number of Substrings With Only 1s
Description
Given a binary string s
(a string consisting only of '0' and '1's).
Return the number of substrings with all characters 1's.
Since the answer may be too large, return it modulo 10^9 + 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:
s[i] == '0'
ors[i] == '1'
1 <= s.length <= 10^5
Solution(javascript)
/**
* @param {string} s
* @return {number}
*/
const numSub = function (s) {
const base = (10 ** 9) + 7
let left = 0
let count = 0
for (let right = 0; right < s.length; right++) {
const current = s[right]
if (current === '1') {
count = ((count % base) + (right - left + 1 % base)) % base // 以右边结尾的
} else {
left = right + 1
}
}
return count
}