Número de substrings que comienzan con «geeks» y terminan con «for»

Dada una string str que consta de alfabetos ingleses en minúsculas, la tarea es encontrar el recuento de substrings que comienzan con «geeks» y terminan con «for» .
Ejemplos: 
 

Entrada: str = “geeksforgeeksisforgeeks” 
Salida:
“geeksfor”, “geeksforgeeksisfor” y “geeksisfor” 
son las únicas substrings válidas.
Entrada: str = «geeksforgeeks» 
Salida:
 

Enfoque ingenuo: primero establezca el contador en 0, luego itere sobre la string y cada vez que se encuentre la substring «geeks» , desde los índices siguientes vuelva a iterar sobre la string e intente encontrar la substring «for» . Si «for» está presente, incremente el contador y finalmente imprímalo.
Enfoque eficiente: establezca dos contadores para las substrings «geeks» y «for» , digamos c1 y c2. Al iterar, cada vez que se encuentre la substring «geeks» , incremente c1 y cada vez que se encuentre «for» , establezca c2 = c2 + c1 . Esto se debe a que cada aparición de «geeks»creará una substring válida con el «for» actual encontrado . Finalmente, imprima c2 .
A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ implementation of the approach
#include <iostream>
using namespace std;
 
// Function to return the count
// of required substrings
int countSubStr(string s, int n)
{
    int c1 = 0, c2 = 0;
 
    // For every index of the string
    for (int i = 0; i < n; i++) {
 
        // If the substring starting at
        // the current index is "geeks"
        if (s.substr(i, 5) == "geeks")
            c1++;
 
        // If the substring is "for"
        if (s.substr(i, 3) == "for")
            c2 = c2 + c1;
    }
 
    return c2;
}
 
// Driver code
int main()
{
    string s = "geeksforgeeksisforgeeks";
    int n = s.size();
 
    cout << countSubStr(s, n);
 
    return 0;
}

Java

// Java implementation of the approach
class GFG
{
 
    // Function to return the count
    // of required substrings
    static int countSubStr(String s, int n)
    {
        int c1 = 0, c2 = 0;
 
        // For every index of the string
        for (int i = 0; i < n; i++)
        {
 
            // If the substring starting at
            // the current index is "geeks"
            if (i < n - 5 &&
                "geeks".equals(s.substring(i, i + 5)))
            {
                c1++;
            }
 
            // If the substring is "for"
            if (i < n - 3 &&
                "for".equals(s.substring(i, i + 3)))
            {
                c2 = c2 + c1;
            }
        }
        return c2;
    }
 
    // Driver code
    public static void main(String[] args)
    {
        String s = "geeksforgeeksisforgeeks";
        int n = s.length();
        System.out.println(countSubStr(s, n));
    }
}
 
// This code is contributed by 29AjayKumar

Python3

# Python3 implementation of the approach
 
# Function to return the count
# of required substrings
def countSubStr(s, n) :
 
    c1 = 0; c2 = 0;
 
    # For every index of the string
    for i in range(n) :
 
        # If the substring starting at
        # the current index is "geeks"
        if (s[i : i + 5] == "geeks") :
            c1 += 1;
 
        # If the substring is "for"
        if (s[i :i+ 3] == "for") :
            c2 = c2 + c1;
 
    return c2;
 
# Driver code
if __name__ == "__main__" :
 
    s = "geeksforgeeksisforgeeks";
    n = len(s);
 
    print(countSubStr(s, n));
     
# This code is contributed by AnkitRai01

C#

// C# implementation of the approach
using System;
     
public class GFG
{
  
    // Function to return the count
    // of required substrings
    static int countSubStr(String s, int n)
    {
        int c1 = 0, c2 = 0;
  
        // For every index of the string
        for (int i = 0; i < n; i++)
        {
  
            // If the substring starting at
            // the current index is "geeks"
            if (i < n - 5 &&
                "geeks".Equals(s.Substring(i, 5)))
            {
                c1++;
            }
  
            // If the substring is "for"
            if (i < n - 3 &&
                "for".Equals(s.Substring(i, 3)))
            {
                c2 = c2 + c1;
            }
        }
        return c2;
    }
  
    // Driver code
    public static void Main(String[] args)
    {
        String s = "geeksforgeeksisforgeeks";
        int n = s.Length;
        Console.WriteLine(countSubStr(s, n));
    }
}
 
// This code is contributed by 29AjayKumar

Javascript

<script>
 
// JavaScript implementation of the approach
 
// Function to return the count
// of required substrings
function countSubStr(s, n)
{
    var c1 = 0, c2 = 0;
 
    // For every index of the string
    for (var i = 0; i < n; i++) {
 
        // If the substring starting at
        // the current index is "geeks"
        if (s.substring(i, i+5) == "geeks")
            c1++;
 
        // If the substring is "for"
        if (s.substring(i,i+ 3) == "for")
            c2 = c2 + c1;
    }
 
    return c2;
}
 
// Driver code
var s = "geeksforgeeksisforgeeks";
var n = s.length;
document.write( countSubStr(s, n));
 
</script>
Producción: 

3

 

Publicación traducida automáticamente

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