Nếu isjunk bị bỏ qua hoặc
>>> s = SequenceMatcher[lambda x: x==" ", " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [1, 0, 4]5, get_longest_match[] trả về
>>> s = SequenceMatcher[lambda x: x==" ", " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [1, 0, 4]6 sao cho
>>> s = SequenceMatcher[lambda x: x==" ", " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [1, 0, 4]7 bằng với
>>> s = SequenceMatcher[lambda x: x==" ", " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [1, 0, 4]8, trong đó
>>> s = SequenceMatcher[lambda x: x==" ", " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [1, 0, 4]9 và
>>> s = SequenceMatcher[lambda x: x==" ", " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [1, 0, 4]0. Đối với tất cả
>>> s = SequenceMatcher[lambda x: x==" ", " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [1, 0, 4]0 đáp ứng các điều kiện đó, các điều kiện bổ sung
>>> s = SequenceMatcher[lambda x: x==" ", " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [1, 0, 4]1,
>>> s = SequenceMatcher[lambda x: x==" ", " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [1, 0, 4]2 và nếu
>>> s = SequenceMatcher[lambda x: x==" ", " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [1, 0, 4]3,
>>> s = SequenceMatcher[lambda x: x==" ", " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [1, 0, 4]4 cũng được đáp ứng. Nói cách khác, trong số tất cả các khối khớp tối đa, hãy trả về khối bắt đầu sớm nhất trong a và trong số tất cả các khối khớp tối đa bắt đầu sớm nhất trong a, hãy trả về khối bắt đầu sớm nhất trong b
>>> s = SequenceMatcher[None, " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [0, 4, 5]
Nếu isjunk được cung cấp, đầu tiên, khối phù hợp dài nhất được xác định như trên, nhưng với hạn chế bổ sung là không có phần tử rác nào xuất hiện trong khối. Sau đó, khối đó được mở rộng hết mức có thể bằng cách khớp [chỉ] các phần tử rác ở cả hai bên. Vì vậy, khối kết quả không bao giờ khớp với rác trừ khi rác giống hệt nhau xảy ra liền kề với một trận đấu thú vị
Đây là ví dụ tương tự như trước đây, nhưng coi khoảng trống là rác. Điều đó ngăn cản
>>> s = SequenceMatcher[lambda x: x==" ", " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [1, 0, 4]5 so khớp trực tiếp với
>>> s = SequenceMatcher[lambda x: x==" ", " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [1, 0, 4]5 ở phần cuối của chuỗi thứ hai. Thay vào đó, chỉ có
>>> s = SequenceMatcher[lambda x: x==" ", " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [1, 0, 4]7 có thể khớp và khớp với
>>> s = SequenceMatcher[lambda x: x==" ", " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [1, 0, 4]7 ngoài cùng bên trái trong chuỗi thứ hai
find_longest_match[mình, alo, ahi, blo, bhi]
>>> s = SequenceMatcher[lambda x: x==" ", " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [1, 0, 4]0
Cho hai xâu, nhiệm vụ của chúng ta là in ra xâu con chung dài nhất. Chúng tôi sẽ giải quyết vấn đề trong python bằng cách sử dụng SequenceMatcher. phương thức find_longest_match[]
Lớp khác biệt. SequenceMatcher là một lớp linh hoạt để so sánh các cặp trình tự thuộc bất kỳ loại nào, miễn là các phần tử trình tự có thể băm được
find_longest_match[a, x, b, y]
Tìm khối khớp dài nhất trong a[a. x] và b[b. y]
ví dụ
>>> s = SequenceMatcher[lambda x: x==" ", " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [1, 0, 4]1
thuật toán
>>> s = SequenceMatcher[lambda x: x==" ", " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [1, 0, 4]2
Mã ví dụ
>>> s = SequenceMatcher[lambda x: x==" ", " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [1, 0, 4]3
đầu ra
>>> s = SequenceMatcher[lambda x: x==" ", " abcd", "abcd abcd"] >>> s.find_longest_match[0, 5, 0, 9] [1, 0, 4]4