[路飞]_js算法:leetcode 187-重复的DNA序列

115 阅读1分钟

leetcode 187. 重复的DNA序列

问题描述: DNA序列 由一系列核苷酸组成,缩写为 'A''C''G' 和 'T'.。

  • 例如,"ACGAATTCCG" 是一个 DNA序列 。

在研究 DNA 时,识别 DNA 中的重复序列非常有用。

给定一个表示 DNA序列 的字符串 s ,返回所有在 DNA 分子中出现不止一次的 长度为 10 的序列(子字符串)。你可以按 任意顺序 返回答案。

示例 1:

输入: s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
输出: ["AAAAACCCCC","CCCCCAAAAA"]

示例 2:

输入: s = "AAAAAAAAAAAAA"
输出: ["AAAAAAAAAA"]

思路: 对序列从头开始遍历,把经过的长度为10的字符放进哈希表,然后对哈希表中值维护(某序列出现次数)

/**
 * @param {string} s
 * @return {string[]}
 */
var findRepeatedDnaSequences = function(s) {
let map={};
  for(let i=0;i<s.length-9;i++){
    if(map[s.substr(i,10)]) map[s.substr(i,10)]+=1;
    else{
      map[s.substr(i,10)]=1
    }
  }
  let res=[];
  for(let item in map){
    if(map[item]>1){res.push(item)}
  }
  return res
};