Maison >développement back-end >Tutoriel Python >Comment puis-je compter efficacement les occurrences de sous-chaînes qui se chevauchent en Python ?

Comment puis-je compter efficacement les occurrences de sous-chaînes qui se chevauchent en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-09 18:18:171014parcourir

How Can I Efficiently Count Overlapping Substring Occurrences in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn