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 variable 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 0s in a string formed by k concatenations
- Longest substring of only 4's from the first N characters of the infinite string
- 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
- Find the longest sub-string which is prefix, suffix and also present inside the string | Set 2
- Find if a given string can be represented from a substring by iterating the substring “n” times
- Longest subsequence with at least one character appearing in every string
- Longest subsequence of the form 0*1*0* in a binary string
- Count subsequence of length three in a given string
- Maximum length substring with highest frequency in a string
- Check if string can be rearranged so that every Odd length Substring is Palindrome
- Maximum length prefix of one string that occurs as subsequence in another
- Length of Longest sub-string that can be removed