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.



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : vt_m, Shivi_Aggarwal



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.