Überlappende String-Vorkommen effektiv zählen
Die Anzahl der Vorkommen eines Teilstrings innerhalb eines Strings zu ermitteln, kann schwierig sein, insbesondere wenn Überlappungen zulässig sind. Bibliotheken wie Pythons String bieten zu diesem Zweck integrierte Methoden wie „count“, berücksichtigen jedoch keine überlappenden Instanzen.
Zählung überlappender Zeichen
Betrachten Sie den folgenden Ansatz :
def overlapping_count(string, substring): count = 0 for i in range(len(string) - len(substring) + 1): if string[i:i+len(substring)] == substring: count += 1 return count
Hier iteriert die Funktion durch die Zeichenfolge und untersucht Teilzeichenfolgen der angegebenen Länge und Erhöhen der Anzahl, wenn eine Übereinstimmung gefunden wird. Diese Methode ist unkompliziert, kann aber bei großen Strings relativ langsam sein.
Eine mögliche Optimierung
Aus Leistungsgründen lohnt es sich, einen anderen Ansatz zu erkunden, bei dem die Fähigkeiten von Cython genutzt werden:
import cython @cython.boundscheck(False) def faster_occurrences(string, substring): cdef int count = 0 cdef int start = 0 while True: start = string.find(substring, start) + 1 if start > 0: count += 1 else: return count
Mit Cython können wir die Vorteile statischer Typdeklarationen und Just-In-Time (JIT)-Kompilierung nutzen, um die Leistung zu verbessern indem unnötige Typprüfungen und Optimierungen für Python-Code übersprungen werden. Diese optimierte Funktion sollte bei größeren Datensätzen deutlich schneller sein.
Das obige ist der detaillierte Inhalt vonWie können wir überlappende Teilstringvorkommen in Python effizient zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!