Python | Formas de encontrar la enésima aparición de una substring en una string

Dada una string y una substring, escriba un programa Python para encontrar la enésima aparición de la string. Analicemos algunos métodos para resolver la tarea dada. 
Método #1: Usar re 

Python3

# Python code to demonstrate
# to find nth occurrence of substring
 
import re
 
# Initialising values
ini_str = "abababababab"
substr = "ab"
occurrence = 4
 
 
# Finding nth occurrence of substring
inilist = [m.start() for m in re.finditer(r"ab", ini_str)]
if len(inilist)>= 4:
   
  # Printing result
  print ("Nth occurrence of substring at", inilist[occurrence-1])
else:
  print ("No {} occurrence of substring lies in given string".format(occurrence))

  Método #2: Usando el método find() 

Python3

# Python code to demonstrate
# to find nth occurrence of substring
 
# Initialising values
ini_str = "abababababab"
sub_str = "ab"
occurrence = 4
 
 
# Finding nth occurrence of substring
val = -1
for i in range(0, occurrence):
  val = ini_str.find(sub_str, val + 1)
   
# Printing nth occurrence
print ("Nth occurrence is at", val)

  Método n.º 3: usar la función «startwith()» y la comprensión de listas 

Python3

# Python code to demonstrate
# to find nth occurrence of substring
 
# Initialising values
ini_str = "abababababab"
substr = "ab"
occurrence = 4
 
 
# Finding nth occurrence of substring
inilist = [i for i in range(0, len(ini_str))
      if ini_str[i:].startswith(substr)]
 
if len(inilist)>= 4:
   
  # Printing result
  print ("Nth occurrence of substring at", inilist[occurrence-1])
else:
  print ("No {} occurrence of substring lies in given string".format(occurrence))
    

La Complejidad de Tiempo y Espacio es la misma para todos los métodos:

Complejidad de tiempo: O(n)

Complejidad espacial: O(n) (longitud de la string)

Publicación traducida automáticamente

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