Related Articles

Related Articles

Longest sub string of 0’s in a binary string which is repeated K times
  • Difficulty Level : Easy
  • Last Updated : 30 Jul, 2019

Given binary string S of size N and a number K. The task is to find the Longest sub string of 0’s in the string which is formed by repeating given string K times.

Examples:

Input : S = “100001” , K = 3
Output : 4
After repeating given string 3 time, string becomes 100001100001100001.
The longest substring of 0’s is 4

Input : S = “010001000”, K = 4
Output : 4

Approach:



  1. If K is one, then find the longest substring of 0’s in a string using a simple loops
  2. If K is greater than one, then add a given string to the end of the string. Then string becomes S+S and length will be 2*N and find the longest substring of 0’s in a string using a simple loops
    • If the longest substring is 2*N then, our answer will be K*N
    • Otherwise it will be the our required answer

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to find the find the Longest continuous
// sequence of '0' after repeating Given string K time
#include <bits/stdc++.h>
using namespace std;
  
// Function to find the longest substring of 0's
int longest_substring(string s, int k)
{
    // To store size of the string
    int n = s.size();
      
    if(k>1)
    {
        s += s;
        n *= 2;
    }    
      
    // To store the required answer
    int ans = 0;
      
    // Find the longest substring of 0's
    int i = 0;
    while (i < n)
    {
        int x = 0;
          
        // Run a loop upto s[i] is zero
        while (s[i] == '0' && i < n)
            x++, i++;
        ans = max(ans, x);
        i++;
    }
      
    // Check the conditions
    if(k==1 or ans!=n)
        return ans;
          
    else
        return (ans/2)*k;
}
  
// Driver code
int main()
{
    string s = "010001000";
      
    int k = 4;
      
    // Function call
    cout << longest_substring(s, k);
      
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to find the Longest continuous
// sequence of '0' after repeating Given string K time
class GFG
{
  
// Function to find the longest substring of 0's
static int longest_substring(String s, int k)
{
    // To store size of the string
    int n = s.length();
      
    if(k > 1)
    {
        s += s;
        n *= 2;
    
      
    // To store the required answer
    int ans = 0;
      
    // Find the longest substring of 0's
    int i = 0;
    while (i < n)
    {
        int x = 0;
          
        // Run a loop upto s[i] is zero
        while (i < n && s.charAt(i) == '0')
        {
            x++; i++;
        }
        ans = Math.max(ans, x);
        i++;
    }
      
    // Check the conditions
    if(k == 1 || ans != n)
        return ans;
          
    else
        return (ans / 2) * k;
}
  
// Driver code
public static void main(String[] args) 
{
    String s = "010001000";
      
    int k = 4;
      
    // Function call
    System.out.println(longest_substring(s, k));
}
}
  
// This code is contributed by Rajput-Ji

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to find the find the Longest continuous
# sequence of '0' after repeating Given K time
  
# Function to find the longest subof 0's
def longest_substring(s, k):
    # To store size of the string
    n = len(s)
  
    if(k>1):
        s += s
        n *= 2
  
    # To store the required answer
    ans = 0
  
    # Find the longest subof 0's
    i = 0
    while (i < n):
        x = 0
  
        # Run a loop upto s[i] is zero
        while (i < n and s[i] == '0'):
            x,i=x+1, i+1
        ans = max(ans, x)
        i+=1
  
    # Check the conditions
    if(k==1 or ans!=n):
        return ans
  
    else:
        return (ans//2)*k
  
  
# Driver code
  
s = "010001000"
  
k = 4
  
# Function call
print(longest_substring(s, k))
  
# This code is contributed by mohit kumar 29

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to find the Longest continuous
// sequence of '0' after repeating Given string K time
using System;
      
class GFG
{
  
// Function to find the longest substring of 0's
static int longest_substring(String s, int k)
{
    // To store size of the string
    int n = s.Length;
      
    if(k > 1)
    {
        s += s;
        n *= 2;
    
      
    // To store the required answer
    int ans = 0;
      
    // Find the longest substring of 0's
    int i = 0;
    while (i < n)
    {
        int x = 0;
          
        // Run a loop upto s[i] is zero
        while (i < n && s[i] == '0')
        {
            x++; i++;
        }
        ans = Math.Max(ans, x);
        i++;
    }
      
    // Check the conditions
    if(k == 1 || ans != n)
        return ans;
          
    else
        return (ans / 2) * k;
}
  
// Driver code
public static void Main(String[] args) 
{
    String s = "010001000";
      
    int k = 4;
      
    // Function call
    Console.WriteLine(longest_substring(s, k));
}
}
  
// This code is contributed by PrinciRaj1992 

chevron_right



Output:

4

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 Articles
Page :