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: 3
“geeksfor”, “geeksforgeeksisfor” y “geeksisfor”
son las únicas substrings válidas.
Entrada: str = «geeksforgeeks»
Salida: 1
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>
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