- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

# Count of substrings of a binary string containing K ones in C++

We are given a string of binary numbers i.e. combination of 0’s and 1’s and an integer value k and the task is to calculate the count of substrings formed with the given binary string having given k 1’s.

**Input** − string str = ‘10000100000’, k = 2

**Output** − Count of substrings of a binary string containing K ones are − 6

**Explanation** − Substrings that can be formed from the given string are 1, 10, 100, 1000, 10000, 010, 100001, 10001, 1001, 101, 11, 1000010. So there are 6 substrings having k number of 1’s i.e. exactly 2 ones.

**Input** − string str = ‘10000100000’, k = 3

**Output** − Count of substrings of a binary string containing K ones are − 0

**Explanation** − We are given with an integer value of k as 3 and if we check our string containing binary numbers, it has only 2 ones. So there is no possibility of substring having given k number of ones.

## The approach used in the below program is as follows

Input a string of binary numbers having combinations of 0’s and 1’s and an integer variable k.

Calculate the length of the string using length() function and pass the data to the function for further processing.

Declare a temporary variable count and total as 0 for storing the substrings with k ones.

Declare an array to store the frequency of ones of size as length of string plus one and initialise it with 0 and set the first element of array as 1.

Start loop FOR from 0 till the length of an array

Inside the loop, set total as total + str[i] - ‘0’. Check IF total >= k then set count as count + arr[total-k].

Return count

Print the result.

## Example

#include <bits/stdc++.h> using namespace std; int sub_k_ones(string str, int length, int k){ int count = 0; int total_1 = 0; int arr_fre[length + 1] = {0}; arr_fre[0] = 1; for (int i = 0; i < length; i++){ total_1 = total_1 + (str[i] - '0'); if (total_1 >= k){ count = count + arr_fre[total_1 - k]; } arr_fre[total_1]++; } return count; } int main(){ string str = "10000100000"; int length = str.length(); int k = 2; cout<<"Count of substrings of a binary string containing K ones are: "<<sub_k_ones(str, length, k) << endl; return 0; }

## Output

If we run the above code it will generate the following output −

Count of substrings of a binary string containing K ones are: 6

- Related Questions & Answers
- Count Binary Substrings in C++
- Maximum count of substrings of length K consisting of same characters in C++
- Count Unique Characters of All Substrings of a Given String in C++
- Count number of substrings with exactly k distinct characters in C++
- Maximum difference of zeros and ones in binary string in C++
- Program to count substrings with all 1s in binary string in Python
- Number of Substrings Containing All Three Characters in C++
- C++ code to count number of even substrings of numeric string
- Count of total anagram substrings in C++
- Maximum difference of zeros and ones in binary string - (O(n) time) in C++
- Counting even decimal value substrings in a binary string in C++
- Count the number of vowels occurring in all the substrings of given string in C++
- Program to convert a string to zigzag string of line count k in python
- Number of even substrings in a string of digits in C++
- Get all substrings of a string in JavaScript recursively