找出兩個字串中的公有子字串
辨識兩個字串共享的公用子字串是程式設計的常見任務。假設我們有兩個輸入字串,如問題陳述所示:
<br>string1 = "apples"<br>string2 = "appleses"<br>
在這種情況下,公有子字串是「apples」。同樣,對於更複雜的範例:
<br>string1 = "蘋果派可用"<br>string2 = "蘋果派"<br>
預期輸出應該是“apple pie”,它代表共享子字串。
使用 difflib 的 Pythonic 解決方案
為了在 Python 中有效地解決這個問題,我們可以利用標準庫中包含 difflib 模組。具體來說,SequenceMatcher 中的 find_longest_match() 方法可用於識別兩個字串之間最長的公共子字串。
<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中找到兩個字串之間最長的公共子字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!