Compruebe si una string se puede dividir en 3 substrings de modo que una de ellas sea una substring de las otras dos

Dada una string S que consta de N alfabetos en minúsculas, la tarea es verificar si es posible dividir la string S en tres substrings no vacías, de modo que Y sea la substring de las strings X y Z. Si es posible dividir la string S , imprima «Sí» . De lo contrario, escriba “No” .

Ejemplos:

Entrada: S = «geekseekforgeeks»
Salida:
Explicación:
La string dada S = «geeksforgeeks» se puede dividir en «geeks», «eek» y Z = «forgeeks».
La string «eeks» es una substring de las strings «geeks» y «forgeeks».

Entrada: S = “naturalxws”
Salida: No

Enfoque: el problema dado se puede resolver almacenando la frecuencia de caracteres únicos y observando el hecho de que si existe algún carácter que tenga una frecuencia de al menos 3 , entonces la string se puede dividir en 3 substrings que satisfagan las condiciones dadas. Siga los pasos a continuación para resolver el problema:

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 string S contains
// any character with frequency >= 3 or not
string freqCheck(string S, int N)
{
    // Stores frequency of characters
    int hash[26] = { 0 };
 
    // Iterate over the string
    for (int i = 0; i < N; i++) {
 
        // Update the frequency
        // of current character
        hash[S[i] - 'a']++;
    }
 
    // Iterate over the hash array
    for (int i = 0; i < 26; i++) {
 
        // If any character has
        // frequency >= 3
        if (hash[i] > 2) {
            return "Yes";
        }
    }
 
    // Otherwise
    return "No";
}
 
// Driver Code
int main()
{
    string S = "geekseekforgeeks";
    int N = S.length();
    cout << freqCheck(S, N);
 
    return 0;
}

Java

// Java program for the above approach
import java.io.*;
import java.lang.*;
import java.util.*;
 
class GFG{
 
// Function to check if string S contains
// any character with frequency >= 3 or not
static String freqCheck(String S, int N)
{
     
    // Stores frequency of characters
    int hash[] = new int[26];
 
    // Iterate over the string
    for(int i = 0; i < N; i++)
    {
         
        // Update the frequency
        // of current character
        hash[S.charAt(i) - 'a']++;
    }
 
    // Iterate over the hash array
    for(int i = 0; i < 26; i++)
    {
         
        // If any character has
        // frequency >= 3
        if (hash[i] > 2)
        {
            return "Yes";
        }
    }
 
    // Otherwise
    return "No";
}
 
// Driver Code
public static void main(String[] args)
{
    String S = "geekseekforgeeks";
    int N = S.length();
     
    System.out.println(freqCheck(S, N));
}
}
 
// This code is contributed by Kingash

Python3

# Python3 program for the above approach
 
# Function to check if string S contains
# any character with frequency >= 3 or not
def freqCheck(S, N):
 
    # Stores frequency of characters
    hash = [0] * 26
 
    # Iterate over the string
    for i in range(N):
 
        # Update the frequency
        # of current character
        hash[ord(S[i]) - ord('a')] += 1
 
    # Iterate over the hash array
    for i in range(26):
 
        # If any character has
        # frequency >= 3
        if (hash[i] > 2):
            return "Yes"
 
    # Otherwise
    return "No"
 
# Driver Code
if __name__ == "__main__":
 
    S = "geekseekforgeeks"
    N = len(S)
     
    print(freqCheck(S, N))
     
# This code is contributed by ukasp

C#

// C# program for the above approach
using System;
 
class GFG{
     
// Function to check if string S contains
// any character with frequency >= 3 or not
static string freqCheck(string S, int N)
{
     
    // Stores frequency of characters
    int[] hash = new int[26];
 
    // Iterate over the string
    for(int i = 0; i < N; i++)
    {
         
        // Update the frequency
        // of current character
        hash[S[i] - 'a']++;
    }
 
    // Iterate over the hash array
    for(int i = 0; i < 26; i++)
    {
         
        // If any character has
        // frequency >= 3
        if (hash[i] > 2)
        {
            return "Yes";
        }
    }
 
    // Otherwise
    return "No";
}
 
// Driver code
static public void Main()
{
    string S = "geekseekforgeeks";
    int N = S.Length;
     
    Console.WriteLine(freqCheck(S, N));
}
}
 
// This code is contributed by offbeat

Javascript

<script>
    // Javascript program for the above approach
 
// Function to check if string S contains
// any character with frequency >= 3 or not
function freqCheck(S, N){
 
    // Stores frequency of characters
    let hash = new Array(26).fill(0)
 
    // Iterate over the string
    for(let i = 0; i < N; i++){
 
        // Update the frequency
        // of current character
        hash[S.charCodeAt(i) - 'a'.charCodeAt(0)] += 1
    }
    // Iterate over the hash array
    for(let i = 0; i < 26; i++){
 
        // If any character has
        // frequency >= 3
        if (hash[i] > 2){
            return "Yes"
        }
    }
 
    // Otherwise
    return "No"
}
// Driver Code
 
    let S = "geekseekforgeeks"
    let N = S.length
     
    document.write(freqCheck(S, N))
     
// This code is contributed by gfgking
</script>
Producción: 

Yes

 

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

Publicación traducida automáticamente

Artículo escrito por ManikantaBandla 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 *