题目描述:
所有 DNA 都由一系列缩写为 'A','C','G' 和 'T' 的核苷酸组成,例如:"ACGAATTCCG"。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。
编写一个函数来找出所有目标子串,目标子串的长度为 10,且在 DNA 字符串 s 中出现次数超过一次。
解析:
map方法:
Java(set):
public List<String> findRepeatedDnaSequences(String s) {
Set<String> set = new HashSet<String>();
Set<String> result = new HashSet<String>();
int i = 0;
while(i + 10 <= s.length()) {
String dna = s.substring(i, i+10);
if(set.contains(dna)) {
result.add(dna);
} else {
set.add(dna);
}
i++;
}
return new ArrayList<String>(result);
}JavaScript(map):
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) {
map.set(dna, 2);
result.push(dna);
} else {
map.set(dna, map.get(dna)+1);
}
i++;
}
return result;
};
京公网安备 11010502036488号