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 4Input : S = “010001000”, K = 4
Output : 4
Approach:
- If K is one, then find the longest substring of 0’s in a string using a simple loops
- 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 <bits/stdc++.h>using namespace std;// Function to find the longest substring of 0'sint 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 codeint 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 timeclass GFG{// Function to find the longest substring of 0'sstatic 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 codepublic 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'sdef 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 codes = "010001000"k = 4# Function callprint(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 timeusing System; class GFG{// Function to find the longest substring of 0'sstatic 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 codepublic 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
<script>// Javascript program to find the find the Longest continuous// sequence of '0' after repeating Given string K time// Function to find the longest substring of 0'sfunction longest_substring(s, k){ // To store size of the string var n = s.length; if(k>1) { s += s; n *= 2; } // To store the required answer var ans = 0; // Find the longest substring of 0's var i = 0; while (i < n) { var x = 0; // Run a loop upto s[i] is zero while (s[i] == '0' && i < n) x++, i++; ans = Math.max(ans, x); i++; } // Check the conditions if(k==1 || ans!=n) return ans; else return (ans/2)*k;}// Driver codevar s = "010001000";var k = 4;// Function calldocument.write( longest_substring(s, k));</script> |
Time Complexity: O(n), where n is the length of the string
Auxiliary Space: O(n), for concatenating the string with itself.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
