https://leetcode-cn.com/problems/repeated-dna-sequences/
点击查看【bilibili】
题目
所有 DNA 都由一系列缩写为 ‘A’,’C’,’G’ 和 ‘T’ 的核苷酸组成,例如:”ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。
编写一个函数来找出所有目标子串,目标子串的长度为 10,且在 DNA 字符串 s 中出现次数超过一次。
示例
输入:s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
输出:["AAAAACCCCC","CCCCCAAAAA"]
输入:s = "AAAAAAAAAAAAA"
输出:["AAAAAAAAAA"]
解答
答案
var findRepeatedDnaSequences = function(s) {
const map = new Map()
const result = []
let i = 0;
while(i+10 <= s.length) {
const dna = s.substring(i,i+10)
if(!map.has(dna)) { // 没有出现过
map.set(dna,1)
}else if(map.get(dna) === 1) { // 出现次数 1
map.set(dna,2)
result.push(dna)
}else { // 出现次数大于1
map.set(dna, map.get(dna) +1 )
}
i++
}
return result
};
var findRepeatedDnaSequences = function(s) {
const set = new Set(), result = new Set()
let i = 0;
while(i+10 <= s.length) {
const dna = s.substring(i,i+10)
if(set.has(dna)) { // 如果出现过,就添加到result
result.add(dna)
}else { // 没有出现过添加到set里
set.add(dna)
}
i++
}
return Array.from(result)
};