문제

내 코드 (82ms, 59.40mb)

/**
 * @param {string} s
 * @return {string[]}
 */
var findRepeatedDnaSequences = function(s) {
    const map = new Map();
    if (s.length < 10) return [];
    let answer = [];
    
    let left = 0;
    let right = 10;
    while (right !== s.length+1) {
        const cur = s.substring(left, right);
        if (!map.has(cur)) map.set(cur, 1);
        else map.set(cur, map.get(cur) + 1);
        left++; right++;
    }

    map.forEach((key, value) => {
        if (key >= 2) answer.push(value);
    })

    return answer;
};

 

천재의 코드 (출처)

var findRepeatedDnaSequences = function(s) {
    let curr = s.slice(0, 10);
    const seen = new Set([curr]);
    const res = new Set();
    
    for(let i = 10; i < s.length; i++) {
        curr = curr.slice(1) + s[i];
        if(seen.has(curr)) res.add(curr);
        seen.add(curr);
    }
    return [...res];
};

 

'개발 이론 > 풀이' 카테고리의 다른 글

[Grind75] 20. Valid Parentheses  (0) 2024.04.16