Check if a string contains two non overlapping sub-strings "geek" and "keeg" - GeeksforGeeks

21 May, 2021
Given a string str, the task is to check whether the string contains two non-overlapping sub-strings s1 = “geek” and s2 = “keeg” such that s2 starts after s1 ends.Examples:  
Input: str = “geekeekeeg” Output: Yes “geek” and “keeg” both are present in the given string without overlapping.Input: str = “geekeeg” Output: No “geek” and “keeg” both are present but they overlap.  
 
Approach: Check if the sub-string “geek” occurs before “keeg” in the given string. This problem is simpler when we use a predefined function strstr in order to find the occurrence of a sub-string in the given string.Below is the implementation of the above approach:  
C++
Java
Python3
C#
Javascript
// C++ implementation of the approach#include <bits/stdc++.h>using namespace std; // Function that returns true// if s contains two non overlapping// sub strings "geek" and "keeg"bool isValid(char s[]){    char* p;     // If "geek" and "keeg" are both present    // in s without over-lapping and "keeg"    // starts after "geek" ends    if ((p = strstr(s, "geek")) && (strstr(p + 4, "keeg")))        return true;     return false;} // Driver codeint main(){    char s[] = "geekeekeeg";     if (isValid(s))        cout << "Yes";    else        cout << "No";     return 0;}
// Java implementation of the approachclass GFG{ // Function that returns true// if s contains two non overlapping// sub Strings "geek" and "keeg"static boolean isValid(String s){    // If "geek" and "keeg" are both present    // in s without over-lapping and "keeg"    // starts after "geek" ends    if ((s.indexOf( "geek")!=-1) &&        (s.indexOf( "keeg",s.indexOf( "geek") + 4)!=-1))        return true;     return false;} // Driver codepublic static void main(String args[]){    String s = "geekeekeeg";     if (isValid(s))        System.out.println("Yes");    else        System.out.println("No");}} // This code is contributed by Arnab Kundu
# Python 3 implementation of the approach # Function that returns true# if s contains two non overlapping# sub strings "geek" and "keeg"def isValid(s):    p=""     # If "geek" and "keeg" are both present    # in s without over-lapping and "keeg"    # starts after "geek" ends    p=s.find("geek")    if (s.find("keeg",p+4)):        return True     return False # Driver codeif __name__ == "__main__":    s = "geekeekeeg"     if (isValid(s)):        print("Yes")    else:        print("No") # This code is contributed by ChitraNayal
// C# implementation of the approach using System; class GFG{ // Function that returns true// if s contains two non overlapping// sub Strings "geek" and "keeg"static bool isValid(string s){    // If "geek" and "keeg" are both present    // in s without over-lapping and "keeg"    // starts after "geek" ends    if ((s.IndexOf( "geek")!=-1) &&        (s.IndexOf( "keeg",s.IndexOf( "geek") + 4)!=-1))        return true;     return false;} // Driver codepublic static void Main(){    string s = "geekeekeeg";     if (isValid(s))        Console.WriteLine("Yes");    else        Console.WriteLine("No");}} // This code is contributed by AnkitRai01
<script> // JavaScript implementation of the approach // Function that returns true// if s contains two non overlapping// sub Strings "geek" and "keeg"function isValid(s){    // If "geek" and "keeg" are both present    // in s without over-lapping and "keeg"    // starts after "geek" ends    if ((s.indexOf("geek") != -1) &&        (s.indexOf("keeg", s.indexOf("geek") + 4) != -1))        return true;     return false;} // Driver Codevar s = "geekeekeeg"; if (isValid(s))    document.write("Yes");else    document.write("No");    // This code is contributed by Khushboogoyal499 </script>
Yes
 
andrew1234
ankthon
ukasp
khushboogoyal499
substring
Strings
Strings
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Top 50 String Coding Problems for Interviews
Print all the duplicates in the input string
Vigenère Cipher
sprintf() in C
Convert character array to string in C++
Naive algorithm for Pattern Searching
How to Append a Character to a String in C
Boyer Moore Algorithm for Pattern Searching
Hill Cipher
Program to count occurrence of a given character in a string