Check if substring S1 appear after any occurrence of substring S2 in given sentence
Last Updated :
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: True
Explanation: 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++
#include <bits/stdc++.h>
using namespace std;
bool 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 ;
}
int main()
{
string S = "sxygeeksgcodetecode" ;
string S1 = "code" , S2 = "geek" ;
chekfavstring(S, S1, S2) ? cout << "True"
: cout << "False" ;
return 0;
}
|
Java
class GFG {
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 ;
}
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" );
}
}
}
|
Python3
def 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
if __name__ = = "__main__" :
S = "sxygeeksgcodetecode"
S1 = "code"
S2 = "geek"
print ( "True" ) if chekfavstring(S, S1, S2) else print ( "False" )
|
C#
using System;
class GFG
{
static 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 ;
}
public static void Main()
{
string S = "sxygeeksgcodetecode" ;
string S1 = "code" , S2 = "geek" ;
if (chekfavstring(S, S1, S2)) {
Console.Write( "True" );
}
else {
Console.Write( "False" );
}
}
}
|
Javascript
<script>
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 ;
}
let S = "sxygeeksgcodetecode" ;
let S1 = "code" , S2 = "geek" ;
chekfavstring(S, S1, S2) ? document.write( "True" )
: document.write( "False" )
</script>
|
Time Complexity: O(N * K)
Auxiliary Space: O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...