Skip to content
Related Articles

Related Articles

Check if a string contains two non overlapping sub-strings “geek” and “keeg”
  • Last Updated : 28 May, 2019

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




// 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 code
int main()
{
    char s[] = "geekeekeeg";
  
    if (isValid(s))
        cout << "Yes";
    else
        cout << "No";
  
    return 0;
}

Java




// Java implementation of the approach
class 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 code
public 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




# 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 code
if __name__ == "__main__":
    s = "geekeekeeg"
  
    if (isValid(s)):
        print("Yes")
    else:
        print("No")
  
# This code is contributed by ChitraNayal

C#




// 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 code 
public static void Main() 
    string s = "geekeekeeg"
  
    if (isValid(s)) 
        Console.WriteLine("Yes"); 
    else
        Console.WriteLine("No"); 
  
// This code is contributed by AnkitRai01
Output:
Yes



My Personal Notes arrow_drop_up
Recommended Articles
Page :