Python
 Computer >> コンピューター >  >> プログラミング >> Python

最長の共通部分文字列に対するPythonのSequenceMatcher。


2つの文字列が与えられた場合、私たちのタスクは最も長い共通のサブ文字列を出力することです。 SequenceMatcher.find_longest_match()メソッドを使用してPythonの問題を解決します。

クラスdifflib.SequenceMatcherは、シーケンス要素がハッシュ可能である限り、任意のタイプのシーケンスのペアを比較するための柔軟なクラスです。

find_longest_match(a、x、b、y)

a [a:x]とb [b:y]で最も長く一致するブロックを見つけます。

Input:  str1 = "pythonprogramming", 
        str2 = "pro"
Output: pro

アルゴリズム

Step 1: Enter two string.
Step 2: initialize SequenceMatcher object with the input string.
Step 3: find the match of longest sub-string output.
Step 4: print longest substring.

サンプルコード

# Python program to find Longest Common Sub-string 
from difflib import SequenceMatcher 
def matchsubstring(m,n): 
   seqMatch = SequenceMatcher(None,m,n) 
   match = seqMatch.find_longest_match(0, len(m), 0, len(n)) 
   if (match.size!=0): 
      print ("Common Substring ::>",m[match.a: match.a + match.size])  
   else: 
      print ('No longest common sub-string found') 
# Driver program 
if __name__ == "__main__": 
   X = input("Enter first String ")
   Y = input("Enter second String ")
   matchsubstring(X,Y) 

出力

Enter first String pythonprogramming
Enter second String pro
Common Substring ::> pro

  1. 2つの数の最大公約数のためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 2つの整数が与えられているので、2つの数値の最大公約数を表示する必要があります ここでは、入力として受け取る2つの数値の最小値を計算しています。各値を1から計算された最小値まで除算することによって計算されて除数を計算するループ 条件が真であると評価されるたびに、カウンターは1ずつ増加します。 それでは、以下の実装の概念を見てみましょう- 例 a = 5 b = 45 count = 0 for i in range(1, min(a, b)+1):    if a%i==0 an

  2. アナグラム部分文字列検索用のPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −テキストとパターンが与えられた場合、パターンのすべての出現とその順列(またはアナグラム)をテキストで印刷する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # maximum value MAX = 300 # compare def compare(arr1, arr2):    for i in range(MAX):       if arr1[i] != arr2[i]:       &nbs