Feature #6: Identify a Species
Explore how to identify alien species by locating the longest substring of unique nucleotides in DNA sequences. Learn to implement an efficient algorithm in Ruby that tracks nucleotide occurrences, manages substrings, and handles complexity to solve computational biology problems.
We'll cover the following...
Description
The DNA for an alien species consists of a sequence of nucleotides. We can uniquely identify a species by finding the longest substring of nucleotides in the DNA, where no nucleotide appears twice. This substring of DNA is known as a species marker. Given an animal’s DNA, where each nucleotide is represented by a letter, we can find its species marker.
The following examples might clarify the requirements:
Solution
The basic idea is to traverse the entire sequence of nucleotides and search for a substring in which no nucleotides appear twice. For each visited nucleotide, we can store its last occurrence in a hash table, with the key as the nucleotide and the value as its last position in the sequence.
Here’s how we implement this feature.
-
We initialize the following set of variables to
0to keep track of the visited nucleotides:st_curr: the starting index of the current substring.longest: the length of the longest substring.start: the starting index of the longest substring.curr_len: the length of the current substring.
-
For every nucleotide in the sequence, we check whether it is present in the hash table or not.