diff --git a/javascript/0187-repeated-dna-sequences.js b/javascript/0187-repeated-dna-sequences.js index d126e70d1..66a0a4b01 100644 --- a/javascript/0187-repeated-dna-sequences.js +++ b/javascript/0187-repeated-dna-sequences.js @@ -1,8 +1,42 @@ /** + * https://leetcode.com/problems/repeated-dna-sequences/ + * Hashing + * s = the number of letters in the sequence. In our case, it's 10. so the time complexity would be 10*n which boils down to n. + * Time O(n) | Space O(n) * @param {string} s * @return {string[]} */ var findRepeatedDnaSequences = function (s) { + const sequenceSet = new Set(); + let resultSet = new Set(); + + for (let i = 0; i < s.length; i++) { + const subSequence = getSubSequence(s, i, 10); + if (sequenceSet.has(subSequence)) { + resultSet.add(subSequence); + } else { + sequenceSet.add(subSequence); + } + } + + resultSet = [...resultSet]; + return resultSet; +}; + +function getSubSequence(s, i, len) { + return s.slice(i, i + len); +} + +// an alternative code with the same approach. +/** + * https://leetcode.com/problems/repeated-dna-sequences/ + * Hashing + * s = the number of letters in the sequence. In our case, it's 10. so the time complexity would be 10*n which boils down to n. + * Time O(n) | Space O(n) + * @param {string} s + * @return {string[]} + */ +var findRepeatedDnaSequences1 = function (s) { const seen = new Set(); const res = new Set(); const arr = Array.from(s);