ホームページ  >  記事  >  バックエンド開発  >  Pythonで2つの文字列間の最長の共通部分文字列を見つけるにはどうすればよいですか?

Pythonで2つの文字列間の最長の共通部分文字列を見つけるにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-27 03:40:02238ブラウズ

How to Find the Longest Common Substring Between Two Strings in Python?

2 つの文字列内の共通部分文字列の検索

2 つの文字列によって共有される共通部分文字列を特定することは、プログラミングにおける一般的なタスクです。問題ステートメントに示されているように、2 つの入力文字列があるとします。

<br>string1 = "apples"<br>string2 = "appleses"<br>

この場合、共通部分文字列は「apples」です。同様に、より複雑な例:

<br>string1 = "apple pie available"<br>string2 = "apple pies"<br>

予期される出力は、共有部分文字列を表す "apple pie" である必要があります。

difflib を使用した Python による解決策

Python でこの問題を効率的に解決するには、以下を活用できます。標準ライブラリに含まれる difflib モジュール。具体的には、SequenceMatcher の find_longest_match() メソッドを利用して、2 つの文字列間の最も長い共通部分文字列を識別できます。

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

string1 = "apple pie available"
string2 = "come have some apple pies"

match = SequenceMatcher(None, string1, string2).find_longest_match()

print(match)  # Output: Match(a=0, b=15, size=9)
print(string1[match.a:match.a + match.size])  # Output: "apple pie"
print(string2[match.b:match.b + match.size])  # Output: "apple pie"</code>

3.9 より前の Python バージョンでは、find_longest_match() メソッドには追加の引数が必要です。

<code class="python">SequenceMatcher(None, string1, string2).find_longest_match(0, len(string1), 0, len(string2))</code>

このアプローチを採用すると、入力文字列のペアから共通の部分文字列を効果的に抽出でき、共有シーケンスを見つけるタスクを簡素化できます。

以上がPythonで2つの文字列間の最長の共通部分文字列を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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