Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich überlappende String-Vorkommen in Python effizient zählen?

Wie kann ich überlappende String-Vorkommen in Python effizient zählen?

DDD
DDDOriginal
2024-12-24 20:06:16720Durchsuche

How Can I Efficiently Count Overlapping String Occurrences in Python?

Zählung überlappender String-Vorkommen in Python

Wenn es um die Zählung von String-Vorkommen geht, kann das Übersehen von Überlappungen zu falschen Ergebnissen führen. Ein gängiger Ansatz besteht darin, die Zeichenfolge Zeichen für Zeichen zu durchlaufen, was jedoch bei größeren Zeichenfolgen ineffizient sein kann.

Gibt es einen besseren Weg?

Ja, das gibt es eine effizientere Lösung mit der find()-Methode, die in C funktioniert. Hier ist der verbesserte Code:

def occurrences(string, sub):
    count = start = 0
    while True:
        start = string.find(sub, start) + 1
        if start > 0:
            count+=1
        else:
            return count

Wie es ist Funktioniert

  • Die Methode string.find() sucht nach dem ersten Vorkommen von sub, beginnend mit der Position start in der Zeichenfolge.
  • Die Schleife wird fortgesetzt, bis keine Vorkommen mehr gefunden werden .
  • Die Startposition wird nach jedem Vorkommen zur Überprüfung um eins erhöht Überschneidungen.

Verwendungsbeispiel

Zum Beispiel würde das Zählen der Vorkommen von „11“ in der Zeichenfolge „1011101111“ mit dieser Methode zum gleichen Ergebnis führen 5, aber mit verbesserter Effizienz.

Das obige ist der detaillierte Inhalt vonWie kann ich überlappende String-Vorkommen in Python effizient zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn