Check if a string has m consecutive 1’s or 0’s

Given a binary string and a number m, the task is to check if the string has m consecutive 1’s or 0’s

Examples:

Input : str = “001001”, m = 2
Output : YES

Input : str = “1000000001”, m = 10
Output : NO

The approach is to count the consecutive 1’s or 0’s by traversing in the binary string. While traversing in the binary string, keep a count of the number of 1’s or 0’s appearing consecutively. If there are M consecutive 1’s or 0’s, return True else return False.



Given below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// Program to check if the binary string 
// contains m consecutive 1's or 0's
#include <bits/stdc++.h>
#include <stdio.h>
using namespace std;
  
// Function that checks if
// the binary string contains m
// consecutive 1's or 0's
bool check(string s, int m)
{
    // length of binary string
    int l = s.length();
  
    // counts zeros
    int c1 = 0;
  
    // counts 1's
    int c2 = 0;
  
    for (int i = 0; i < l; i++) {
  
        if (s[i] == '0') {
            c2 = 0;
             
           // count consecutive 0's
            c1++; 
        }
        else {
            c1 = 0;
  
            // count consecutive 1's
            c2++; 
        }
        if (c1 == m || c2 == m)
            return true;
    }
    return false;
}
  
// Drivers Code
int main()
{
    string s = "001001";
    int m = 2;
  
    // function call
    if (check(s, m))
        cout << "YES";
    else
        cout << "NO";
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Program to check if the 
// binary string contains 
// m consecutive 1's or 0's
import java.io.*;
  
class GFG 
{
  
// Function that checks if
// the binary string contains m
// consecutive 1's or 0's
static boolean check(String s, 
                     int m)
{
    // length of binary string
    int l = s.length();
  
    // counts zeros
    int c1 = 0;
  
    // counts 1's
    int c2 = 0;
  
    for (int i = 0; i < l; i++)
    {
  
        if (s.charAt(i) == '0'
        {
            c2 = 0;
              
        // count consecutive 0's
            c1++; 
        }
        else 
        {
            c1 = 0;
  
            // count consecutive 1's
            c2++; 
        }
        if (c1 == m || c2 == m)
            return true;
    }
    return false;
}
  
// Drivers Code
  
public static void main (String[] args) 
{
    String s = "001001";
    int m = 2;
      
    // function call
    if (check(s, m))
        System.out.println( "YES");
    else
        System.out.println( "NO");
}
}
  
// This code is contributed by anuj_67.

chevron_right


Python 3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Program to check if the binary string 
# contains m consecutive 1's or 0's
  
# Function that checks if
# the binary string contains m
# consecutive 1's or 0's
def check(s, m):
  
    # length of binary string
    l = len(s);
  
    # counts zeros
    c1 = 0;
  
    # counts 1's
    c2 = 0;
  
    for i in range(0, l - 1): 
  
        if (s[i] == '0'): 
            c2 = 0;
              
        # count consecutive 0's
            c1 = c1 + 1
          
        else :
            c1 = 0;
  
            # count consecutive 1's
            c2 = c2 + 1
          
        if (c1 == m or c2 == m):
            return True;
      
    return False;
  
# Driver Code
s = "001001";
m = 2;
  
# function call
if (check(s, m)):
    print("YES");
else :
    print("NO");
  
# This code is contributed 
# by Shivi_Agggarwal

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// Program to check if the 
// binary string contains 
// m consecutive 1's or 0's
using System;
  
class GFG 
{
  
// Function that checks if
// the binary string contains 
// m consecutive 1's or 0's
static bool check(string s, 
                  int m)
{
    // length of 
    // binary string
    int l = s.Length;
  
    // counts zeros
    int c1 = 0;
  
    // counts 1's
    int c2 = 0;
  
    for (int i = 0; i < l; i++)
    {
  
        if (s[i] == '0'
        {
            c2 = 0;
              
            // count consecutive
            // 0's
            c1++; 
        }
        else
        {
            c1 = 0;
  
            // count consecutive
            // 1's
            c2++; 
        }
        if (c1 == m || c2 == m)
            return true;
    }
    return false;
}
  
// Driver Code
public static void Main () 
{
    String s = "001001";
    int m = 2;
      
    // function call
    if (check(s, m))
        Console.WriteLine( "YES");
    else
        Console.WriteLine( "NO");
}
}
  
// This code is contributed 
// by anuj_67.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Program to check if the 
// binary string contains m
// consecutive 1's or 0's
  
// Function that checks if
// the binary string contains 
// m consecutive 1's or 0's
function check($s, $m)
{
    // length of binary 
    // string
    $l = count($s);
  
    // counts zeros
    $c1 = 0;
  
    // counts 1's
    $c2 = 0;
  
    for ($i = 0; $i <= $l; $i++) 
    {
  
        if ($s[$i] == '0'
        {
            $c2 = 0;
              
            // count consecutive 
            // 0's
            $c1++; 
        }
        else 
        {
            $c1 = 0;
  
            // count consecutive 1's
            $c2++; 
        }
        if ($c1 == $m or 
            $c2 == $m)
            return true;
    }
    return false;
}
  
// Driver Code
$s = "001001";
$m = 2;
  
// function call
if (check($s, $m))
    echo "YES";
else
    echo "NO";
  
// This code is contributed 
// by anuj_67.
?>

chevron_right


Output :

YES

Time Complexity: O(N), where N is the length of the binary string.

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Recommended Posts:

    Article Tags :
    Practice Tags :


    Be the First to upvote.


    Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.