T187、重复的DNA序列
2020-10-10 本文已影响0人
上行彩虹人
所有 DNA 都由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。
编写一个函数来查找目标子串,目标子串的长度为 10,且在 DNA 字符串 s 中出现次数超过一次。
示例:
输入:s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
输出:["AAAAACCCCC", "CCCCCAAAAA"]
解
题目就是求解有多少长度为10的子串多次出现。使用双set求解,第一个set用于判断子串是否出现,第二个set用于对2次以上子串去重,以保证该类子串只出现一次。
public List<String> findRepeatedDnaSequences(String s) {
Set<String> res = new HashSet<>();
Set<String> set = new HashSet<>();
int len = s.length();
for(int i = 10; i <= len; i++){
String sub = s.substring(i-10,i);
if(!set.add(sub))
res.add(sub);
}
return new ArrayList(res);
}