Skip to content

187. Repeated Dna Sequences

Hash Table String Bit Manipulation Sliding Window Rolling Hash Hash Function

Problem - Repeated Dna Sequences

Medium

The DNA sequence is composed of a series of nucleotides abbreviated as 'A', 'C', 'G', and 'T'.

  • For example, "ACGAATTCCG" is a DNA sequence.

When studying DNA, it is useful to identify repeated sequences within the DNA.

Given a string s that represents a DNA sequence, return all the 10-letter-long sequences (substrings) that occur more than once in a DNA molecule. You may return the answer in any order.

 

Example 1:

Input: s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
Output: ["AAAAACCCCC","CCCCCAAAAA"]

Example 2:

Input: s = "AAAAAAAAAAAAA"
Output: ["AAAAAAAAAA"]

 

Constraints:

  • 1 <= s.length <= 105
  • s[i] is either 'A', 'C', 'G', or 'T'.

Solutions

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
class Solution:
    def findRepeatedDnaSequences(self, s: str) -> List[str]:
        # This is the promary use case of Rabin-Karp?
        count = Counter()
        result = []
        for i in range(len(s) - 9): # len(s) - 10 + 1
            tmp = s[i:i + 10]
            count[tmp] += 1
            if count[tmp] == 2:
                result.append(tmp)

        return result

Submission Stats:

  • Runtime: 35 ms (19.72%)
  • Memory: 28.8 MB (76.73%)