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
Libérer: 2024-12-09 18:18:17
original
1065 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal