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

SequenceMatcher ใน Python หา Longest Common Substring

กำหนดสตริงสองสตริง งานคือพิมพ์ longest common sub-string แก้ปัญหาใน Python ด้วยเมธอด SequenceMatcher.find_longest_match()

คลาส difflib.SequenceMatcher เป็นคลาสยืดหยุ่นสำหรับเปรียบเทียบคู่ของลำดับประเภทใดก็ได้ ตราบใดที่สมาชิกลำดับเป็น hashable

find_longest_match(a, x, b, y)

หาบล็อกที่ตรงกันมากที่สุดใน a[a:x] และ b[b:y]

ตัวอย่าง

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

อัลกอริทึม

ขั้นตอนที่ 1: ป้อนสตริงสองสตริง
ขั้นตอนที่ 2: เริ่มต้นอ็อบเจ็กต์ SequenceMatcher ด้วยสตริงอินพุท
ขั้นตอนที่ 3: หาการจับคู่ของ longest sub-string
ขั้นตอนที่ 4: พิมพ์ longest substring

โค้ดตัวอย่าง

# โปรแกรม Python หา 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('ไม่พบ longest common sub-string')

# โปรแกรมหลัก
if __name__ == "__main__":
    X = input("ป้อนสตริงแรก ")
    Y = input("ป้อนสตริงที่สอง ")
    matchsubstring(X, Y)

ผลลัพธ์

ป้อนสตริงแรก pythonprogramming
ป้อนสตริงที่สอง pro
Common Substring ::> pro