กำหนดสตริงสองสตริง งานคือพิมพ์ 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