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'.
Solution
Python3
class Solution:
    def numSub(self, S: str) -> int:
        
        M = int(1e9+7)
        count = res = 0
        for s in S:
            count = count + 1 if s == "1" else 0
            res += count
        
        return res%M