Check if substring S1 appear after any occurrence of substring S2 in given sentence - GeeksforGeeks

18 Jan, 2022
Given strings S1, S2 and S, the task is to check if every substring of S which is same as S1 has another substring of S same as S2 before it. It is given that S1 is always present as a substring in the string S.
Examples:
Input: S1 = “code”, S2 = “geek”, S = “sxygeeksgcodetecode”Output: TrueExplanation: Substring S2 is present before both the occurrence of S1.“sxygeeksgcodetecode“
Input: S1  = “code”, S2 = “my”, “sxycodesforgeeksvhgh”Output: False
Approach: The approach is to check which substring occurs first. If substring S2 occurs first return true. If S1 occurs first return false.
Below is the implementation of the above approach:
C++
Java
Python3
C#
Javascript
// C++ program for the above approach#include <bits/stdc++.h>using namespace std; // Function to check if S2 is present// before all S1 in string Sbool chekfavstring(string& S, string& S1,                   string& S2){    bool cod = false;    int n = S.size();    int n1 = S1.size(), n2 = S2.size();    for (int i = 0; i <= n - n2; i++) {        string str;        for (int k = i; k < i + n2; k++) {            str.push_back(S[k]);        }        if (str == S2) {            return true;        }        if (str == S1) {            return false;        }    }    return true;} // Driver codeint main(){    string S = "sxygeeksgcodetecode";    string S1 = "code", S2 = "geek";    chekfavstring(S, S1, S2) ? cout << "True"                             : cout << "False";    return 0;}
// Java program to implement// the above approachclass GFG {   // Function to check if S2 is present  // before all S1 in string S  static boolean chekfavstring(String S, String S1,                               String S2)  {    int n = S.length();    int n1 = S1.length(), n2 = S2.length();    for (int i = 0; i <= n - n2; i++) {      String str = "";      for (int k = i; k < i + n2; k++) {        str += S.charAt(k);      }      if (str == S2) {        return true;      }      if (str == S1) {        return false;      }    }    return true;  }   // Driver Code  public static void main(String[] args)  {    String S = "sxygeeksgcodetecode";    String S1 = "code", S2 = "geek";     if (chekfavstring(S, S1, S2)) {      System.out.print("True");    }    else {      System.out.print("False");    }  }} // This code is contributed by ukasp.
# python3 program for the above approach # Function to check if S2 is present# before all S1 in string Sdef chekfavstring(S, S1, S2):     cod = False    n = len(S)    n1 = len(S1)    n2 = len(S2)     for i in range(0, n - n2 + 1):        str = ""         for k in range(i, i + n2):            str += S[k]         if (str == S2):            return True         if (str == S1):            return False     return True # Driver codeif __name__ == "__main__":     S = "sxygeeksgcodetecode"     S1 = "code"    S2 = "geek"     print("True") if chekfavstring(S, S1, S2) else print("False")     # This code is contributed by rakeshsahni
// C# program to implement// the above approachusing System;class GFG{ // Function to check if S2 is present// before all S1 in string Sstatic bool chekfavstring(string S, string S1,                   string S2){    int n = S.Length;    int n1 = S1.Length, n2 = S2.Length;    for (int i = 0; i <= n - n2; i++) {        string str = "";        for (int k = i; k < i + n2; k++) {            str += S[k];        }        if (str == S2) {            return true;        }        if (str == S1) {            return false;        }    }    return true;}  // Driver Codepublic static void Main(){    string S = "sxygeeksgcodetecode";    string S1 = "code", S2 = "geek";         if(chekfavstring(S, S1, S2)) {        Console.Write("True");    }    else {        Console.Write("False");    } }} // This code is contributed by Samim Hossain Mondal.
<script>       // JavaScript code for the above approach         // Function to check if S2 is present       // before all S1 in string S       function chekfavstring(S, S1,           S2) {           let cod = false;           let n = S.length;           let n1 = S1.length, n2 = S2.length;           for (let i = 0; i <= n - n2; i++) {               let str = "";               for (let k = i; k < i + n2; k++) {                   str += (S[k]);               }               if (str == S2) {                   return true;               }               if (str == S1) {                   return false;               }           }           return true;       }        // Driver code        let S = "sxygeeksgcodetecode";       let S1 = "code", S2 = "geek";       chekfavstring(S, S1, S2) ? document.write("True")           : document.write("False")  // This code is contributed by Potta Lokesh   </script>
  
True
 
Time Complexity: O(N * K)Auxiliary Space: O(1) 
 
lokeshpotta20
samim2000
ukasp
rakeshsahni
substring
Algo Geek
Strings
Strings
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Find One’s Complement of an Integer | Set 2
Check if the given string is valid English word or not
Encode given String by inserting in Matrix column-wise and printing it row-wise
Lexicographically smallest string formed by concatenating any prefix and its mirrored form
Sorting given character Array using Linked List
Reverse a string in Java
Write a program to reverse an array or string
Longest Common Subsequence | DP-4
C++ Data Types
Write a program to print all permutations of a given string