Given two strings s1, s2 and K, find the length of the longest subsequence formed by consecutive segments of at least length K.
Input : s1 = aggayxysdfa
s2 = aggajxaaasdfa
k = 4
Output : 8
Explanation:aggasdfa is the longest
subsequence that can be formed by taking
consecutive segments, minimum of length 4.
Here segments are "agga" and "sdfa" which
are of length 4 which is included in making
the longest subsequence.
Input : s1 = aggasdfa
s2 = aggajasdfaxy
k = 5
Output : 5
Input: s1 = "aabcaaaa"
s2 = "baaabcd"
k = 3
Explanation: "aabc" is the longest subsequence that
is formed by taking segment of minimum length 3.
The segment is of length 4.
Create a LCS array where LCSi, j denotes the length of the longest common subsequence formed by characters of s1 till i and s2 till j having consecutive segments of at least length K. Create a cnt array to count the length of the common segment. cnti, j= cnti-1, j-1+1 when s1[i-1]==s2[j-1]. If characters are not equal then segments are not equal hence mark cnti, j as 0.
When cnti, j>=k, then update the lcs value by adding the value of lcsi-a, j-a where a is the length of the segments a<=cnti, j. The answer for the longest subsequence with consecutive segments of at least length k will be stored in lcs[n][m] where n and m are the length of string1 and string2.
// CPP program to find the Length of Longest
// subsequence formed by consecutive segments
// of at least length K
// Returns the length of the longest common subsequence
// with a minimum of length of K consecutive segments
Please Login to comment...