LeetCode每日一题|187. 重复的DNA序列

230 阅读1分钟
  • 题目描述

题目链接:leetcode-cn.com/problems/re… image.png

  • 思路分析

使用一个哈希表来记录每个DNA序列(即长度为十的子串)的出现次数,若某一个子串出现了一次以上就记入答案中。所以只需要循环一次,每次取当前下标为首字符,长度为十的子串放入哈希表中,若该子串对应的值为2就说明其符合条件可以放入答案中,同时这样做也可以避免重复放入相同的子串。

  • 代码

var findRepeatedDnaSequences = function (s) {
  if (s.length <= 10) {
    return [];
  }
  let mmap = new Map();
  let res = [];
  for (let i = 0; i <= s.length - 10; i++) {
    let ss = s.slice(i, 10 + i);
    mmap.set(ss, (mmap.get(ss) || 0) + 1);
    if (mmap.get(ss) == 2) {
      res.push(ss);
    }
  }
  return res;
};