Open In App

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

Improve
Improve
Like Article
Like
Save
Share
Report

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 the binary string. While traversing 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++




// 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;
}


Java




// 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.


Python 3




# 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


C#




// 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.


PHP




<?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.
?>


Javascript




<script>
    // 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
        let l = s.length;
 
        // counts zeros
        let c1 = 0;
 
        // counts 1's
        let c2 = 0;
 
        for (let 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;
    }
     
    let s = "001001";
    let m = 2;
       
    // function call
    if (check(s, m))
        document.write( "YES");
    else
        document.write( "NO");
     
</script>


Output

YES

Time Complexity: O(N), where N is the length of the binary string. 
Auxiliary Space: O(1), as no extra space has been used



Last Updated : 17 Jan, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads