# Longest sub string of 0’s in a binary string which is repeated K times

• Difficulty Level : Easy
• Last Updated : 28 May, 2021

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

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

## Javascript

 ``

Output:

`4`

My Personal Notes arrow_drop_up