human
I found an interesting problem on https://leetcode.com/problems/number-of-substrings-with-only-1s/:
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' or s[i] == '1'
1 <= s.length <= 10^5

I tried it in Python, but could not do it. Can you solve it?

What is a the Python program you requested?
assistant
#Here is the Python program you requested.

class Solution:
    def numSub(self, s: str) -> int:
        res = 0

        mod = pow(10,9) + 7

        i = 0
        while i< len(s):
            cnt = 0
            while i < len(s) and s[i] == '1':
                cnt+=1
                i+=1
            i+=1
            res += (cnt*(cnt+1))//2 % mod
        return res