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 <= 105s[i]is either'0'or'1'.
Solutions
Solution 1: Traversal and Counting
We traverse the string \(s\), using a variable \(\textit{cur}\) to record the current count of consecutive 1s, and a variable \(\textit{ans}\) to record the answer. When we traverse to character \(s[i]\), if \(s[i] = 0\), then set \(\textit{cur}\) to 0; otherwise, increment \(\textit{cur}\) by 1, then add \(\textit{cur}\) to \(\textit{ans}\), and take modulo \(10^9 + 7\).
After the traversal is complete, return \(\textit{ans}\).
The time complexity is \(O(n)\), where \(n\) is the length of the string \(s\). The space complexity is \(O(1)\).
Similar problems:
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |