I want to find the minimum subsequence. Have I done this correctly or how can it be better? thank you.
Iām not sure I completely understand the objective here? Could you give a little more detail on what this function is supposed to be doing?
determine if primary is a subsequence of secondary
Primary: AB
Secondary: ABC
False
Primary: AB
Secondary: ABAB
True
Primary: ABAB
Secondary: ABABAB
False
If primary is a subsequence of secondary return the minimum of primary that is a subsequence
Primary: ABAB
Secondary: ABABABAB
minimum subsequence: AB
if primary is not a subsequence return negative length of secondary
Ah, I would try to simplify your code. I see this as two phases
- can the second string be made by repeating the first?
- is there any substring of the first that can recreate the first?
I think you can use the function itself to check 2.
Here is a guess at what might work
function findSmallestRepeatedSubsequence(first, second) {
// Check if the second can evenly hold
// multiples of the first
if (second.length % first.length !== 0)
return false;
// Check for repetition of first
for (let i = 0; i < second.length; i += first.length)
if (second.substring(i, i + first.length) != first)
return false;
// Check if smaller subseq will work
for (let i = 1; i <= first.length/2; i++)
if (findSmallestRepeatedSubsequence(first.substring(0, i), first))
return first.substring(0, i);
// No smaller subseq of first will work
return first;
}
1 Like
This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.