Skip to content

Commit a93e069

Browse files
committed
chore(algorithms, sliding-window, find-repeated-dna-sequences: minor fixes to naive implementation
1 parent 682dcdb commit a93e069

File tree

2 files changed

+45
-3
lines changed

2 files changed

+45
-3
lines changed

algorithms/sliding_window/repeated_dna_sequences/__init__.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,19 @@ def find_repeated_dna_sequences_naive(dna_sequence: str) -> List[str]:
1313
Returns:
1414
List[str]
1515
"""
16+
if len(dna_sequence) <= 10:
17+
return []
18+
1619
result_set = set()
17-
seen: Dict[str, bool] = {}
20+
seen = set()
1821
for idx in range(len(dna_sequence)):
1922
subsequence = dna_sequence[idx:idx+10]
23+
if len(subsequence) < 10:
24+
continue
2025
if subsequence in seen:
2126
result_set.add(subsequence)
2227
else:
23-
seen[subsequence]=True
28+
seen.add(subsequence)
2429

2530
return list(result_set)
2631

algorithms/sliding_window/repeated_dna_sequences/test_repeated_dna_sequences.py

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import unittest
2-
from . import find_repeated_dna_sequences
2+
from . import find_repeated_dna_sequences, find_repeated_dna_sequences_naive
33

44

55
class FindRepeatedDnaSequencesTestCase(unittest.TestCase):
@@ -39,5 +39,42 @@ def test_6(self):
3939
actual = find_repeated_dna_sequences(dna_sequence)
4040
self.assertEqual(expected, actual)
4141

42+
class FindRepeatedDnaSequencesNaiveTestCase(unittest.TestCase):
43+
def test_1(self):
44+
dna_sequence = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
45+
expected = ["CCCCCAAAAA", "AAAAACCCCC"]
46+
actual = find_repeated_dna_sequences_naive(dna_sequence)
47+
self.assertEqual(sorted(expected), sorted(actual))
48+
49+
def test_2(self):
50+
dna_sequence = "GGGGGGGGGGGGGGGGGGGG"
51+
expected = ["GGGGGGGGGG"]
52+
actual = find_repeated_dna_sequences_naive(dna_sequence)
53+
self.assertEqual(expected, actual)
54+
55+
def test_3(self):
56+
dna_sequence = "TTTGGGAAATTTGGGAAACC"
57+
expected = []
58+
actual = find_repeated_dna_sequences_naive(dna_sequence)
59+
self.assertEqual(expected, actual)
60+
61+
def test_4(self):
62+
dna_sequence = "AAAAAAAAAAAAA"
63+
expected = ["AAAAAAAAAA"]
64+
actual = find_repeated_dna_sequences_naive(dna_sequence)
65+
self.assertEqual(expected, actual)
66+
67+
def test_5(self):
68+
dna_sequence = "ACGTACGTACGTACGTACGTACGTACGTACGT"
69+
expected = ["ACGTACGTAC","CGTACGTACG","GTACGTACGT","TACGTACGTA"]
70+
actual = find_repeated_dna_sequences_naive(dna_sequence)
71+
self.assertEqual(sorted(expected), sorted(actual))
72+
73+
def test_6(self):
74+
dna_sequence = "GTACGTACGTACGCCCCCCCCGGGGG"
75+
expected = []
76+
actual = find_repeated_dna_sequences_naive(dna_sequence)
77+
self.assertEqual(expected, actual)
78+
4279
if __name__ == '__main__':
4380
unittest.main()

0 commit comments

Comments
 (0)