:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .absent{color:var(--color-danger-fg)}.markdown-body .anchor{float:left;margin-left:-20px;padding-right:4px;line-height:1}.markdown-body .anchor:focus{outline:none}.markdown-body p,.markdown-body blockquote,.markdown-body ul,.markdown-body ol,.markdown-body dl,.markdown-body table,.markdown-body pre,.markdown-body details{margin-top:0;margin-bottom:16px}.markdown-body hr{height:.25em;background-color:var(--color-border-default);border:0;margin:24px 0;padding:0}.markdown-body blockquote{color:var(--color-fg-muted);border-left:.25em solid var(--color-border-default);padding:0 1em}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-weight:var(--base-text-weight-semibold,600);margin-top:24px;margin-bottom:16px;line-height:1.25}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:var(--color-fg-default);vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1 tt,.markdown-body h1 code,.markdown-body h2 tt,.markdown-body h2 code,.markdown-body h3 tt,.markdown-body h3 code,.markdown-body h4 tt,.markdown-body h4 code,.markdown-body h5 tt,.markdown-body h5 code,.markdown-body h6 tt,.markdown-body h6 code{font-size:inherit;padding:0 .2em}.markdown-body h1{border-bottom:1px solid var(--color-border-muted);padding-bottom:.3em;font-size:2em}.markdown-body h2{border-bottom:1px solid var(--color-border-muted);padding-bottom:.3em;font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{color:var(--color-fg-muted);font-size:.85em}.markdown-body summary h1,.markdown-body summary h2,.markdown-body summary h3,.markdown-body summary h4,.markdown-body summary h5,.markdown-body summary h6{display:inline-block}.markdown-body summary h1 .anchor,.markdown-body summary h2 .anchor,.markdown-body summary h3 .anchor,.markdown-body summary h4 .anchor,.markdown-body summary h5 .anchor,.markdown-body summary h6 .anchor{margin-left:-40px}.markdown-body summary h1,.markdown-body summary h2{border-bottom:0;padding-bottom:0}.markdown-body ul,.markdown-body ol{padding-left:2em}.markdown-body ul.no-list,.markdown-body ol.no-list{padding:0;list-style-type:none}.markdown-body ol[type=a]{list-style-type:lower-alpha}.markdown-body ol[type=A]{list-style-type:upper-alpha}.markdown-body ol[type=i]{list-style-type:lower-roman}.markdown-body ol[type=I]{list-style-type:upper-roman}.markdown-body ol[type="1"]{list-style-type:decimal}.markdown-body div>ol:not([type]){list-style-type:decimal}.markdown-body ul ul,.markdown-body ul ol,.markdown-body ol ol,.markdown-body ol ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{font-size:1em;font-style:italic;font-weight:var(--base-text-weight-semibold,600);margin-top:16px;padding:0}.markdown-body dl dd{margin-bottom:16px;padding:0 16px}.markdown-body table{width:100%;width:-webkit-max-content;width:-webkit-max-content;width:max-content;max-width:100%;display:block;overflow:auto}.markdown-body table th{font-weight:var(--base-text-weight-semibold,600)}.markdown-body table th,.markdown-body table td{border:1px solid var(--color-border-default);padding:6px 13px}.markdown-body table td>:last-child{margin-bottom:0}.markdown-body table tr{background-color:var(--color-canvas-default);border-top:1px solid var(--color-border-muted)}.markdown-body table tr:nth-child(2n){background-color:var(--color-canvas-subtle)}.markdown-body table img{background-color:transparent}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:var(--color-canvas-default)}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body .emoji{max-width:none;vertical-align:text-top;background-color:transparent}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{float:left;width:auto;border:1px solid var(--color-border-default);margin:13px 0 0;padding:7px;display:block;overflow:hidden}.markdown-body span.frame span img{float:left;display:block}.markdown-body span.frame span span{clear:both;color:var(--color-fg-default);padding:5px 0 0;display:block}.markdown-body span.align-center{clear:both;display:block;overflow:hidden}.markdown-body span.align-center>span{text-align:center;margin:13px auto 0;display:block;overflow:hidden}.markdown-body span.align-center span img{text-align:center;margin:0 auto}.markdown-body span.align-right{clear:both;display:block;overflow:hidden}.markdown-body span.align-right>span{text-align:right;margin:13px 0 0;display:block;overflow:hidden}.markdown-body span.align-right span img{text-align:right;margin:0}.markdown-body span.float-left{float:left;margin-right:13px;display:block;overflow:hidden}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{float:right;margin-left:13px;display:block;overflow:hidden}.markdown-body span.float-right>span{text-align:right;margin:13px auto 0;display:block;overflow:hidden}.markdown-body code,.markdown-body tt{white-space:break-spaces;background-color:var(--color-neutral-muted);border-radius:6px;margin:0;padding:.2em .4em;font-size:85%}.markdown-body code br,.markdown-body tt br{display:none}.markdown-body del code{-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}.markdown-body samp{font-size:85%}.markdown-body pre{word-wrap:normal}.markdown-body pre code{font-size:100%}.markdown-body pre>code{word-break:normal;white-space:pre;background:0 0;border:0;margin:0;padding:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{word-break:normal;margin-bottom:0}.markdown-body .highlight pre,.markdown-body pre{background-color:var(--color-canvas-subtle);border-radius:6px;padding:16px;font-size:85%;line-height:1.45;overflow:auto}.markdown-body pre code,.markdown-body pre tt{max-width:auto;line-height:inherit;word-wrap:normal;background-color:transparent;border:0;margin:0;padding:0;display:inline;overflow:visible}.markdown-body .csv-data td,.markdown-body .csv-data th{text-align:left;white-space:nowrap;padding:5px;font-size:12px;line-height:1;overflow:hidden}.markdown-body .csv-data .blob-num{text-align:right;background:var(--color-canvas-default);border:0;padding:10px 8px 9px}.markdown-body .csv-data tr{border-top:0}.markdown-body .csv-data th{font-weight:var(--base-text-weight-semibold,600);background:var(--color-canvas-subtle);border-top:0}.markdown-body [data-footnote-ref]:before{content:"["}.markdown-body [data-footnote-ref]:after{content:"]"}.markdown-body .footnotes{color:var(--color-fg-muted);border-top:1px solid var(--color-border-default);font-size:12px}.markdown-body .footnotes ol{padding-left:16px}.markdown-body .footnotes ol ul{margin-top:16px;padding-left:16px;display:inline-block}.markdown-body .footnotes li{position:relative}.markdown-body .footnotes li:target:before{pointer-events:none;content:"";border:2px solid var(--color-accent-emphasis);border-radius:6px;position:absolute;top:-8px;bottom:-8px;left:-24px;right:-8px}.markdown-body .footnotes li:target{color:var(--color-fg-default)}.markdown-body .footnotes .data-footnote-backref g-emoji{font-family:monospace}.markdown-body{background-color:var(--color-canvas-default);color:var(--color-fg-default)}.markdown-body a{color:var(--color-accent-fg);text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body img[align=center]{margin:0 auto}.markdown-body iframe{background-color:#fff;border:0;margin-bottom:16px}.markdown-body svg.octicon{fill:currentColor}.markdown-body .anchor>.octicon{display:inline}.markdown-body figcaption{text-align:center;padding-top:2px}.markdown-body .highlight .token.keyword,.gfm-highlight .token.keyword{color:var(--color-prettylights-syntax-keyword)}.markdown-body .highlight .token.tag .token.class-name,.markdown-body .highlight .token.tag .token.script .token.punctuation,.gfm-highlight .token.tag .token.class-name,.gfm-highlight .token.tag .token.script .token.punctuation{color:var(--color-prettylights-syntax-storage-modifier-import)}.markdown-body .highlight .token.operator,.markdown-body .highlight .token.number,.markdown-body .highlight .token.boolean,.markdown-body .highlight .token.tag .token.punctuation,.markdown-body .highlight .token.tag .token.script .token.script-punctuation,.markdown-body .highlight .token.tag .token.attr-name,.gfm-highlight .token.operator,.gfm-highlight .token.number,.gfm-highlight .token.boolean,.gfm-highlight .token.tag .token.punctuation,.gfm-highlight .token.tag .token.script .token.script-punctuation,.gfm-highlight .token.tag .token.attr-name{color:var(--color-prettylights-syntax-constant)}.markdown-body .highlight .token.function,.gfm-highlight .token.function{color:var(--color-prettylights-syntax-entity)}.markdown-body .highlight .token.string,.gfm-highlight .token.string{color:var(--color-prettylights-syntax-string)}.markdown-body .highlight .token.comment,.gfm-highlight .token.comment{color:var(--color-prettylights-syntax-comment)}.markdown-body .highlight .token.class-name,.gfm-highlight .token.class-name{color:var(--color-prettylights-syntax-variable)}.markdown-body .highlight .token.regex,.gfm-highlight .token.regex{color:var(--color-prettylights-syntax-string)}.markdown-body .highlight .token.regex .regex-delimiter,.gfm-highlight .token.regex .regex-delimiter{color:var(--color-prettylights-syntax-constant)}.markdown-body .highlight .token.tag .token.tag,.markdown-body .highlight .token.property,.gfm-highlight .token.tag .token.tag,.gfm-highlight .token.property{color:var(--color-prettylights-syntax-entity-tag)}.markdown-body .highlight .token.deleted,.gfm-highlight .token.deleted{color:var(--color-prettylights-syntax-markup-deleted-text);background-color:var(--color-prettylights-syntax-markup-deleted-bg)}.markdown-body .highlight .token.inserted,.gfm-highlight .token.inserted{color:var(--color-prettylights-syntax-markup-inserted-text);background-color:var(--color-prettylights-syntax-markup-inserted-bg)}

Maximum number of set bits count in a Ksize substring of a Binary String (original) (raw)

Last Updated : 18 Oct, 2023

Given a binary string **S of size **N and an integer K. The task is to find the maximum number of set bit appears in a substring of size K.

**Examples:

**Input: S = "100111010", K = 3
**Output: 3
**Explanation:
The substring "111" contains 3 set bits.

****Input:**S = "0000000", K = 4
**Output: 0
**Explanation: S doesn't have any set bits in it, so ans is 0.

**Naive Approach:

  1. Generate all substring of size K.
  2. Find maximum of count of set bits in all substrings.

**Time Complexity: O( N 2 ).
**Auxiliary Space: O(1).

**Efficient Approach: The problem can be solved using Sliding window technique.

  1. Take_**maxcount_ variable to store maximum count of set bit and **Count variable to store count set bit of current window.
  2. Traverse string from 1 to K and calculate the **count of set bits and store as **maxcount.
  3. Traverse string from K + 1 to length of the string.
  4. At every iteration, decrease_**countif ****(K - i)** th bit is set. Increase**count_ if **i th bit is set. Compare and update **maxcount.
  5. After complete array traversal, finally return **maxcount.

Below is the implementation of the above approach:

C++ `

// C++ program to find the maximum // set bits in a substring of size K #include<bits/stdc++.h> using namespace std;

// Function that find Maximum number // of set bit appears in a substring // of size K. int maxSetBitCount(string s, int k) { int maxCount = 0, n = s.length(); int count = 0;

// Traverse string 1 to k
for(int i = 0; i < k; i++) 
{
    
   // Increment count if
   // character is set bit
   if (s[i] == '1')
       count++;
}
maxCount = count;

// Traverse string k+1
// to length of string
for(int i = k; i < n; i++)
{
   
   // Remove the contribution of the
   // (i - k)th character which is no
   // longer in the window
   if (s[i - k] == '1')
       count--;
   
   // Add the contribution of
   // the current character
   if (s[i] == '1')
       count++;
       
   // Update maxCount at for
   // each window of size k
   maxCount = max(maxCount, count);
}

// Return maxCount
return maxCount;

}

// Driver code int main() { string s = "100111010"; int k = 3;

cout << (maxSetBitCount(s, k));
return 0;

}

// This code is contributed by Rajput-Ji

Java

// Java program to find the maximum // set bits in a substring of size K import java.util.*;

class GFG {

// Function that find Maximum number
// of set bit appears in a substring
// of size K.
static int maxSetBitCount(String s, int k)
{

    int maxCount = 0, n = s.length();
    int count = 0;

    // Traverse string 1 to k
    for (int i = 0; i < k; i++) {
        // Increment count if
        // character is set bit
        if (s.charAt(i) == '1')
            count++;
    }

    maxCount = count;

    // Traverse string k+1
    // to length of string
    for (int i = k; i < n; i++) {

        // remove the contribution of the
        // (i - k)th character which is no
        // longer in the window
        if (s.charAt(i - k) == '1')
            count--;

        // add the contribution of
        // the current character
        if (s.charAt(i) == '1')
            count++;

        // update maxCount at for
        // each window of size k
        maxCount = Math.max(maxCount, count);
    }

    // return maxCount
    return maxCount;
}
// Driver Program
public static void main(String[] args)
{
    String s = "100111010";
    int k = 3;

    System.out.println(maxSetBitCount(s, k));
}

}

Python3

Python3 program to find the maximum

set bits in a substring of size K

Function that find Maximum number

of set bit appears in a substring

of size K.

def maxSetBitCount(s, k):

maxCount = 0
n = len(s)
count = 0

# Traverse string 1 to k
for i in range(k):
    
    # Increment count if
    # character is set bit
    if (s[i] == '1'):
        count += 1

maxCount = count

# Traverse string k+1
# to length of string
for i in range(k, n):

    # Remove the contribution of the
    # (i - k)th character which is no
    # longer in the window
    if (s[i - k] == '1'):
        count -= 1

    # Add the contribution of
    # the current character
    if (s[i] == '1'):
        count += 1

    # Update maxCount at for
    # each window of size k
    maxCount = max(maxCount, count)

# Return maxCount
return maxCount

Driver code

if name == 'main':

s = "100111010"
k = 3

print(maxSetBitCount(s, k))

This code is contributed by mohit kumar 29

C#

// C# program to find the maximum // set bits in a substring of size K using System; class GFG {

// Function that find Maximum number // of set bit appears in a substring // of size K. static int maxSetBitCount(string s, int k) {

int maxCount = 0, n = s.Length;
int count = 0;

// Traverse string 1 to k
for (int i = 0; i < k; i++) 
{
    // Increment count if
    // character is set bit
    if (s[i] == '1')
        count++;
}

maxCount = count;

// Traverse string k+1
// to length of string
for (int i = k; i < n; i++) 
{

    // remove the contribution of the
    // (i - k)th character which is no
    // longer in the window
    if (s[i - k] == '1')
        count--;

    // add the contribution of
    // the current character
    if (s[i] == '1')
        count++;

    // update maxCount at for
    // each window of size k
    maxCount = Math.Max(maxCount, count);
}

// return maxCount
return maxCount;

} // Driver Program public static void Main() { string s = "100111010"; int k = 3;

Console.Write(maxSetBitCount(s, k));

} }

// This code is contributed by Code_Mech

JavaScript

`

**Time Complexity: O(N).
**Auxiliary Space: O(1).

Brute Force in python:

Approach:

One simple approach to solve the problem is to generate all possible substrings of length K from the binary string S and count the number of set bits in each substring. Finally, return the maximum count of set bits among all the substrings.

Example usage: Call the max_set_bits() function with the binary string "100111010" and k=3 as inputs and print the output, which should be 3. Similarly, call the function with the binary string "0000000" and k=4 as inputs and print the output, which should be 0.

C++ `

#include using namespace std;

int countSetBits(string s) { int count = 0; for (char c : s) { if (c == '1') { count++; } } return count; } int maxSetBits(string s, int k) { int n = s.length(); int ans = 0; for (int i = 0; i <= n - k; i++) { string subStr = s.substr(i, k); int setBitsCount = countSetBits(subStr); ans = max(ans, setBitsCount); } return ans; } int main() { // Example usage cout << maxSetBits("100111010", 3) << endl; cout << maxSetBits("0000000", 4) << endl; return 0; }

Java

public class Main { // Function to count the number of '1's in a given // string. public static int countSetBits(String s) { int count = 0; for (char c : s.toCharArray()) { if (c == '1') { count++; } } return count; }

// Function to find the maximum count of '1's in a
// substring of length 'k'.
public static int maxSetBits(String s, int k)
{
    int n = s.length();
    int ans = 0;
    // Iterate through the string to find substrings of
    // length 'k'.
    for (int i = 0; i <= n - k; i++) {
        String subStr = s.substring(i, i + k);
        int setBitsCount = countSetBits(subStr);
        ans = Math.max(ans, setBitsCount);
    }
    return ans;
}

public static void main(String[] args)
{
    // Example usage and testing of the maxSetBits
    // function.
    System.out.println(
        "Maximum set bits in '100111010' with k=3: "
        + maxSetBits("100111010", 3));
    System.out.println(
        "Maximum set bits in '0000000' with k=4: "
        + maxSetBits("0000000", 4));
}

}

Python3

def count_set_bits(s): return s.count('1')

def max_set_bits(s, k): n = len(s) ans = 0 for i in range(n-k+1): ans = max(ans, count_set_bits(s[i:i+k])) return ans

Example usage

print(max_set_bits("100111010", 3)) # Output: 3 print(max_set_bits("0000000", 4)) # Output: 0

C#

using System;

class Program { // Function to count the number of set bits in a string static int CountSetBits(string s) { int count = 0; foreach(char c in s) { if (c == '1') { count++; } } return count; }

// Function to find the maximum number of set bits in a
// substring of length k
static int MaxSetBits(string s, int k)
{
    int n = s.Length;
    int ans = 0;
    for (int i = 0; i <= n - k; i++) {
        string subStr = s.Substring(i, k);
        int setBitsCount = CountSetBits(subStr);
        ans = Math.Max(ans, setBitsCount);
    }
    return ans;
}

static void Main()
{
    // Example usage
    Console.WriteLine(MaxSetBits("100111010", 3));
    Console.WriteLine(MaxSetBits("0000000", 4));
}

}

JavaScript

function countSetBits(s) { let count = 0; for (let i = 0; i < s.length; i++) { if (s[i] === '1') { count++; } } return count; } function maxSetBits(s, k) { const n = s.length; let ans = 0; for (let i = 0; i <= n - k; i++) { const subStr = s.substring(i, i + k); const setBitsCount = countSetBits(subStr); ans = Math.max(ans, setBitsCount); } return ans; } // Example usage console.log(maxSetBits("100111010", 3)); console.log(maxSetBits("0000000", 4));

`

**Time Complexity: O(N * K^2), where N is the length of the binary string S.
**Space Complexity: O(1)