# SequenceMatcher in Python for Longest Common Substring

• Difficulty Level : Medium
• Last Updated : 27 Jul, 2022

Given two strings ‘X’ and ‘Y’, print the longest common sub-string. Examples:

```Input :  X = "GeeksforGeeks",
Y = "GeeksQuiz"
Output : Geeks

Input : X = "zxabcdezy",
Y = "yzabcdezx"
Output : abcdez```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

We have existing solution for this problem please refer Print the longest common substring link. We will solve problem in python using SequenceMatcher.find_longest_match() method.

### How SequenceMatcher.find_longest_match(aLow,aHigh,bLow,bHigh) method works ?

First we initialize SequenceMatcher object with two input string str1 and str2, find_longest_match(aLow,aHigh,bLow,bHigh) takes 4 parameters aLow, bLow are start index of first and second string respectively and aHigh, bHigh are length of first and second string respectively. find_longest_match() returns named tuple (i, j, k) such that a[i:i+k] is equal to b[j:j+k], if no blocks match, this returns (aLow, bLow, 0).

Implementation:

## Python3

 `# Function to find Longest Common Sub-string` `from` `difflib ``import` `SequenceMatcher` `def` `longestSubstring(str1,str2):` `     ``# initialize SequenceMatcher object with``     ``# input string``     ``seqMatch ``=` `SequenceMatcher(``None``,str1,str2)` `     ``# find match of longest sub-string``     ``# output will be like Match(a=0, b=0, size=5)``     ``match ``=` `seqMatch.find_longest_match(``0``, ``len``(str1), ``0``, ``len``(str2))` `     ``# print longest substring``     ``if` `(match.size!``=``0``):``          ``print` `(str1[match.a: match.a ``+` `match.size])``     ``else``:``          ``print` `(``'No longest common sub-string found'``)` `# Driver program``if` `__name__ ``=``=` `"__main__"``:``    ``str1 ``=` `'GeeksforGeeks'``    ``str2 ``=` `'GeeksQuiz'``    ``longestSubstring(str1,str2)`

Output

`Geeks`
My Personal Notes arrow_drop_up