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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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++

 `// C++ program to find the find the Longest continuous ` `// sequence of '0' after repeating Given string K time ` `#include ` `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; ` `} `

## Java

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

## Python3

 `# 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 `

## C#

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

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 :