Count of substrings of a Binary string containing only 1s
Last Updated : 16 Nov, 2023
Given a binary string of length N, we need to find out how many substrings of this string contain only 1s.
Examples:
Input: S = "0110111"
Output: 9
Explanation:
There are 9 substring with only 1's characters.
"1" comes 5 times.
"11" comes 3 times.
"111" comes 1 time.
Input: S = "000"
Output: 0
The_Approach: the approach simple we will going to traverse over array and count one follow the steps.
- initialize total=0 and currone=0.
- then traverse over string and count ones in string till zero occur.
- if zero occur then just add the number of possible substring that are possible from currone as.
- total+=(currone*(currone+1))/2. and after addition currone=0.
- do this till n-1.
Below is the implementation of the above approach:
C++ #include <bits/stdc++.h> #include <iostream> using namespace std; int main() { // Given string. string s = "0110111"; // to avoid int overflow. int mod = 1000000007; long long int total = 0; long long int one = 0; // traverse over string. for (int i = 0; i < s.size(); i++) { // count the ones. if (s[i] == '1') { ++one; } else { long long x = (one * (one + 1)) % mod; total += x / 2; one = 0; } } // count if reamin. if (one != 0) total += (long long)(one * (one + 1)) / 2; // printing the output. cout << total << endl; return 0; }
Java import java.util.*; public class GFG { public static void main(String[] args) { // Given string. String s = "0110111"; // To avoid integer overflow. long mod = 1000000007; long total = 0; long one = 0; // Traverse over the string. for (int i = 0; i < s.length(); i++) { // Count the ones. if (s.charAt(i) == '1') { one++; } else { long x = (one * (one + 1)) % mod; total += x / 2; one = 0; } } // Count if remaining ones. if (one != 0) { total += (long) (one * (one + 1)) / 2; } // Printing the output. System.out.println(total); } }
Python3 # Given string s = "0110111" # to avoid int overflow mod = 1000000007 total = 0 one = 0 # traverse over string for i in range(len(s)): # count the ones if s[i] == '1': one += 1 else: x = (one * (one + 1)) % mod total += x // 2 one = 0 # count if remain if one != 0: total += (one * (one + 1)) // 2 # printing the output print(total)
C# using System; class Program { static void Main() { // Given string. string s = "0110111"; // to avoid int overflow. int mod = 1000000007; long total = 0; long one = 0; // traverse over string. for (int i = 0; i < s.Length; i++) { // count the ones. if (s[i] == '1') { ++one; } else { long x = (one * (one + 1)) % mod; total += x / 2; one = 0; } } // count if reamin. if (one != 0) total += (long)(one * (one + 1)) / 2; // printing the output. Console.WriteLine(total); } } // This code is contributed by user_dtewbxkn77n
JavaScript // Given string. let s = "0110111"; // to avoid int overflow. let mod = 1000000007; let total = 0; let one = 0; // traverse over string. for (let i = 0; i < s.length; i++) { // count the ones. if (s[i] == '1') { ++one; } else { let x = (one * (one + 1)) % mod; total += x / 2; one = 0; } } // count if remain. if (one != 0) total += (one * (one + 1)) / 2; // printing the output. console.log(total);
Complexity Analysis:
Time Complexity : O(n).
Auxiliary Space : O(1).
Approach: The idea is to traverse the binary string and count the consecutive ones in the string. Below is the illustration of the approach:
- Traverse the given binary string from index 0 to length - 1
- Count the number of consecutive "1" till index i.
- For each new character str[i], there will be more substring with all character's as "1"
Below is the implementation of the above approach:
C++ // C++ implementation to find // count of substring containing // only ones #include <bits/stdc++.h> using namespace std; // Function to find the total number // of substring having only ones int countOfSubstringWithOnlyOnes(string s) { int res = 0, count = 0; for (int i = 0; i < s.length(); i++) { count = s[i] == '1' ? count + 1 : 0; res = (res + count); } return res; } // Driver Code int main() { string s = "0110111"; cout << countOfSubstringWithOnlyOnes(s) << endl; return 0; }
Java // Java implementation to find // count of substring containing // only ones class GFG{ // Function to find the total number // of substring having only ones static int countOfSubstringWithOnlyOnes(String s) { int res = 0, count = 0; for(int i = 0; i < s.length(); i++) { count = s.charAt(i) == '1' ? count + 1 : 0; res = (res + count); } return res; } // Driver code public static void main(String[] args) { String s = "0110111"; System.out.println(countOfSubstringWithOnlyOnes(s)); } } // This code is contributed by dewantipandeydp
Python3 # Python3 implementation to find # count of substring containing # only ones # Function to find the total number # of substring having only ones def countOfSubstringWithOnlyOnes(s): count = 0 res = 0 for i in range(0,len(s)): if s[i] == '1': count = count + 1 else: count = 0; res = res + count return res # Driver Code s = "0110111" print(countOfSubstringWithOnlyOnes(s)) # This code is contributed by jojo9911
C# // C# implementation to find count // of substring containing only ones using System; class GFG{ // Function to find the total number // of substring having only ones static int countOfSubstringWithOnlyOnes(string s) { int res = 0, count = 0; for(int i = 0; i < s.Length; i++) { count = s[i] == '1' ? count + 1 : 0; res = (res + count); } return res; } // Driver code public static void Main(string[] args) { string s = "0110111"; Console.Write(countOfSubstringWithOnlyOnes(s)); } } // This code is contributed by rutvik_56
JavaScript <script> // Javascript implementation to find // count of substring containing // only ones // Function to find the total number // of substring having only ones function countOfSubstringWithOnlyOnes(s) { var res = 0, count = 0; for (var i = 0; i < s.length; i++) { count = s[i] == '1' ? count + 1 : 0; res = (res + count); } return res; } // Driver Code var s = "0110111"; document.write( countOfSubstringWithOnlyOnes(s)); </script>
Time Complexity: O(n), where n is the size of the given string
Auxiliary Space: O(1)
Similar Reads
Count of substrings of a binary string containing K ones Given a binary string of length N and an integer K, we need to find out how many substrings of this string are exist which contains exactly K ones. Examples: Input : s = â10010â K = 1 Output : 9 The 9 substrings containing one 1 are, â1â, â10â, â100â, â001â, â01â, â1â, â10â, â0010â and â010âRecommen
7 min read
Count N-length Binary Strings consisting of "11" as substring Given a positive integer N, the task is to find the number of binary strings of length N which contains "11" as a substring. Examples: Input: N = 2Output: 1Explanation: The only string of length 2 that has "11" as a substring is "11". Input: N = 12Output: 3719 Approach: The idea is to derive the num
8 min read
Count of substrings in a Binary String that contains more 1s than 0s Given a binary string s, the task is to calculate the number of such substrings where the count of 1's is strictly greater than the count of 0's. Examples Input: S = "110011"Output: 11Explanation: Substrings in which the count of 1's is strictly greater than the count of 0's are { S[0]}, {S[0], S[1]
15+ min read
Count of K length subarrays containing only 1s in given Binary String Given a binary string str, the task is to find the count of K length subarrays containing only 1s. Examples: Input: str = "0101000", K=1Output: 2Explanation: 0101000 -> There are 2 subarrays with 1 ones Input: str = "11111001", K=3Output: 3 Approach: The task can be solved by keeping track of the
4 min read
Count ways to generate Binary String not containing "0100" Substring Given the number N, count the number of ways to create a binary string (the string that contains characters as zero or one) of size N such that it does not contain "0100" as a substring. A substring is a contiguous sequence of characters within a string. Examples: Input: N = 4Output: 15Explanation:
15+ min read
Count of K length subarrays containing only 1s in given Binary String | Set 2 Given binary string str, the task is to find the count of K length subarrays containing only 1s. Examples Input: str = "0101000", K=1Output: 2Explanation: 0101000 -> There are 2 subarrays of length 1 containing only 1s. Input: str = "11111001", K=3Output: 3 Approach: The given problem can also be
4 min read