ホームページ >バックエンド開発 >Python チュートリアル >Python で重複する部分文字列の出現を効率的にカウントするにはどうすればよいでしょうか?

Python で重複する部分文字列の出現を効率的にカウントするにはどうすればよいでしょうか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-15 11:27:16418ブラウズ

How Can We Efficiently Count Overlapping Substring Occurrences in Python?

重複する文字列の出現数を効果的にカウントする

文字列内の部分文字列の出現数を特定することは、特に重複が許可されている場合に難しい場合があります。 Python の文字列などのライブラリは、この目的のために「count」などの組み込みメソッドを提供しますが、インスタンスの重複は考慮されません。

重複する文字のカウント

次のアプローチを検討してください。 :

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

ここで、関数は文字列を反復処理し、その部分文字列を調べます。指定された長さで一致が見つかった場合にカウントが増加します。この方法は簡単ですが、大きな文字列の場合は比較的遅くなる可能性があります。

潜在的な最適化

パフォーマンス上の理由から、Cython の機能を利用する別のアプローチを検討する価値があります。

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

Cython を使用すると、静的型宣言を利用でき、ジャストインタイム (JIT) コンパイルにより、Python コードの不必要な型チェックと最適化をスキップしてパフォーマンスを向上させます。この最適化された関数は、大規模なデータセットでは大幅に高速化されるはずです。

以上がPython で重複する部分文字列の出現を効率的にカウントするにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。