Verifique si la substring S1 aparece después de cualquier ocurrencia de la substring S2 en una oración dada

Dadas las strings S1 , S2 y S , la tarea es verificar si cada substring de S que es igual a S1 tiene otra substring de S igual a S2 antes. Se da que S1 siempre está presente como una substring en la string S.

Ejemplos:

Entrada: S1 = «código», S2 = «geek», S = «sxygeeksgcodetecode»
Salida: Verdadero
Explicación: La substring S2 está presente antes de que ocurra S1.
«sxy geek sg código te código «

Entrada: S1 = «código», S2 = «mi», «sxycodesforgeeksvhgh»
Salida: Falso

 

Enfoque: El enfoque es verificar qué substring ocurre primero. Si aparece la substring S2, primero devuelva verdadero. Si ocurre S1, primero devuelve falso.

A continuación se muestra la implementación del enfoque anterior:

C++

// 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 S
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;
}
 
// Driver code
int main()
{
    string S = "sxygeeksgcodetecode";
    string S1 = "code", S2 = "geek";
    chekfavstring(S, S1, S2) ? cout << "True"
                             : cout << "False";
    return 0;
}

Java

// Java program to implement
// the above approach
class 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

# python3 program for the above approach
 
# Function to check if S2 is present
# before all S1 in string S
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
 
# Driver code
if __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#

// C# program to implement
// the above approach
using System;
class GFG
{
 
// Function to check if S2 is present
// before all S1 in string S
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;
}
 
 
// Driver Code
public 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.

Javascript

<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>
Producción

True

Complejidad temporal: O(N * K)
Espacio auxiliar: O(1) 

Publicación traducida automáticamente

Artículo escrito por sauarbhyadav y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *