Maison >développement back-end >Tutoriel Python >Comment puis-je compter efficacement les occurrences de sous-chaînes qui se chevauchent en Python ?
Comptage des occurrences de chaîne avec des occurrences qui se chevauchent en Python
La question concerne la recherche d'une méthode Python efficace pour compter les occurrences d'une sous-chaîne spécifique, permettant pour les chevauchements. Une approche suggérée implique une recherche itérative :
def function(string, str_to_search_for): count = 0 for x in xrange(len(string) - len(str_to_search_for) + 1): if string[x:x+len(str_to_search_for)] == str_to_search_for: count += 1 return count
Cependant, une méthode potentiellement plus rapide utilise la fonction Python find() pour effectuer la recherche en C :
def occurrences(string, sub): count = start = 0 while True: start = string.find(sub, start) + 1 if start > 0: count += 1 else: return count
Cette approche exploite le l'efficacité de calcul de C en effectuant la recherche dans un langage de niveau inférieur. En utilisant la boucle while, il continue de rechercher les occurrences de la sous-chaîne, en incrémentant la variable count au fur et à mesure qu'il les trouve. En fin de compte, il renvoie le nombre total d'occurrences, y compris celles qui se chevauchent.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!