Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

SequenceMatcher ใน Python สำหรับสตริงย่อยทั่วไปที่ยาวที่สุด


ให้สองสตริง หน้าที่ของเราคือพิมพ์สตริงย่อยทั่วไปที่ยาวที่สุด เราจะแก้ปัญหาใน python โดยใช้วิธี SequenceMatcher.find_longest_match ()

Class 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