Skip to content

1513. Number of Substrings With Only 1s

Description

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.

 

Constraints:

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

 

Solutions

Solution: Math

  • Time complexity: O(n)
  • Space complexity: O(1)

 

JavaScript

js
/**
 * @param {string} s
 * @return {number}
 */
const numSub = function (s) {
  const MODULO = 10 ** 9 + 7;
  let result = (current = subCount = 0);

  for (let index = 0; index <= s.length; index++) {
    const char = s[index];

    if (char === '1') {
      subCount += 1;
      current += subCount;
      continue;
    }
    result = (result + current) % MODULO;
    current = subCount = 0;
  }
  return result;
};

Released under the MIT license