Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah saya boleh mencari subrentetan biasa terpanjang di antara dua rentetan dalam Python dengan cekap?

Bagaimanakah saya boleh mencari subrentetan biasa terpanjang di antara dua rentetan dalam Python dengan cekap?

DDD
Lepaskan: 2024-10-29 09:02:30
asal
327 orang telah melayarinya

How can I efficiently find the longest common substring between two strings in Python?

Mencari Subrentetan Biasa Antara Rentetan

Dalam bidang manipulasi rentetan, selalunya perlu untuk membandingkan dua rentetan dan mengekstrak bahagian bertindih. Tugas ini, yang dikenali sebagai mencari subrentetan biasa, boleh dicapai menggunakan pelbagai pendekatan.

Satu penyelesaian berkuasa terletak pada difflib perpustakaan Python, khususnya fungsi find_longest_matchnya. Fungsi ini dengan teliti mengenal pasti subrentetan biasa terpanjang antara dua rentetan yang diberikan.

<code class="python">from difflib import SequenceMatcher

# Example 1
string1 = "apples"
string2 = "appleses"
match = SequenceMatcher(None, string1, string2).find_longest_match()
common_substring = string1[match.a:match.a + match.size]  # "apples"

# Example 2
string1 = "apple pie available"
string2 = "apple pies"
match = SequenceMatcher(None, string1, string2).find_longest_match()
common_substring = string1[match.a:match.a + match.size]  # "apple pie"

print(common_substring)</code>
Salin selepas log masuk

Dalam versi Python yang lebih lama (sebelum 3.9), fungsi find_longest_match memerlukan argumen tambahan:

<code class="python"># Python versions prior to 3.9
match = SequenceMatcher(None, string1, string2).\
    find_longest_match(0, len(string1), 0, len(string2))</code>
Salin selepas log masuk

Dengan menggunakan pustaka difflib, kami mendapat akses kepada set fungsi yang mantap untuk perbandingan jujukan, membolehkan pengekstrakan lancar subrentetan biasa antara dua rentetan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mencari subrentetan biasa terpanjang di antara dua rentetan dalam Python dengan cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan