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

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).

`# 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) ` |

*chevron_right*

*filter_none*

Output:

Geeks

Attention geek! Strengthen your foundations with the **Python Programming Foundation** Course and learn the basics.

To begin with, your interview preparations Enhance your Data Structures concepts with the **Python DS** Course.