Python | Cuente la substring superpuesta en una string dada

Dada una string y una substring, la tarea es obtener el recuento de substrings superpuestas de la string dada.

Tenga en cuenta que en Python, la count()función devuelve el número de substrings en una string dada, pero no da resultados correctos cuando dos ocurrencias de la substring se superponen. Considere este ejemplo:

string = "GeeksforGeeksforGeeksforGeeks"
  
print(string.count("GeeksforGeeks"))

Producción:

2

El resultado que obtuvimos aquí es 2, pero el resultado esperado es 3 ya que también queríamos contar la ocurrencia de substrings superpuestas.

Para resolver este problema, podemos usar find()la función en Python. Devuelve la posición de inicio de la primera aparición de substring en la string dada, luego incrementamos esta posición en 1 y continuamos la búsqueda desde esa posición hasta el final de la string.

A continuación se muestra la implementación:

def CountOccurrences(string, substring):
  
    # Initialize count and start to 0
    count = 0
    start = 0
  
    # Search through the string till
    # we reach the end of it
    while start < len(string):
  
        # Check if a substring is present from
        # 'start' position till the end
        pos = string.find(substring, start)
  
        if pos != -1:
            # If a substring is present, move 'start' to
            # the next position from start of the substring
            start = pos + 1
  
            # Increment the count
            count += 1
        else:
            # If no further substring is present
            break
    # return the value of count
    return count
  
# Driver Code
string = "GeeksforGeeksforGeeksforGeeks"
print(CountOccurrences(string, "GeeksforGeeks"))
Producción:

3

Publicación traducida automáticamente

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