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
- Find number of times a string occurs as a subsequence in given string
- Longest substring of only 4's from the first N characters of the infinite string
- Longest substring of 0s in a string formed by k concatenations
- Convert to a string that is repetition of a substring of k length
- Find the longest sub-string which is prefix, suffix and also present inside the 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
- Longest subsequence with at least one character appearing in every string
- Maximum length substring with highest frequency in a 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 substring with equal 1s and 0s