Given two string X and Y. The task is to find the length of longest subsequence of string X which is substring in sequence Y.
Input : X = "ABCD", Y = "BACDBDCD" Output : 3 "ACD" is longest subsequence of X which is substring of Y. Input : X = "A", Y = "A" Output : 1
Method 1 (Brute Force):
Use brute force to find all the subsequence of X and for each subsequence check whether it is substring of Y or not. If it is substring of Y, maintain a maximum length varible and compare length with it.
Method 2: (Dynamic Programming):
Let n be length of X and m be length of Y. Create a 2D array ‘dp’ of m + 1 rows and n + 1 columns. Value dp[i][j] is maximum length of subsequence of X[0….j] which is substring of Y[0….i]. Now for each cell of dp fill value as :
for (i = 1 to m) for (j = 1 to n) if (x[i-1] == y[j - 1]) dp[i][j] = dp[i-1][j-1] + 1; else dp[i][j] = dp[i][j-1];
And finally, the length of the longest subsequence of x which is substring of y is max(dp[i][n]) where 1 <= i <= m.
Below is implementation this approach:
This article is contributed by Anuj Chauhan. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
- Find the longest substring with k unique characters in a given string
- Convert to a string that is repetition of a substring of k length
- Longest substring of 0s in a string formed by k concatenations
- Find number of times a string occurs as a subsequence in given string
- Maximum length substring with highest frequency in a string
- Count subsequence of length three in a given string
- Find if a given string can be represented from a substring by iterating the substring “n” times
- Longest subsequence of the form 0*1*0* in a binary string
- Maximum length prefix of one string that occurs as subsequence in another
- Length of Longest sub-string that can be removed
- Length of longest consecutive ones by at most one swap in a Binary String
- Length of the longest valid substring
- Longest Even Length Substring such that Sum of First and Second Half is same
- Length of the longest substring with equal 1s and 0s
- Length of the longest substring without repeating characters