所有 DNA 由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。
编写一个函数来查找 DNA 分子中所有出现超多一次的10个字母长的序列(子串)。
示例:
输入: s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
输出: ["AAAAACCCCC", "CCCCCAAAAA"]
题解:
- 使用两个SET:set1存放已存在的String,如果出现重复存入set2中
- set.add()方法返回一个boolean值:如果未存在返回true,存在返回false,可将判断条件和存放结合,这些接口在设计的时候考虑的真全面
class Solution {
public List<String> findRepeatedDnaSequences(String s) {
//set存放已存在的String,如果出现重复存入ret中
Set<String> set = new HashSet<>();
Set<String> ret = new HashSet<>();
for(int i=0 ; i<s.length()-10+1 ; i++){
String tmp = s.substring(i,i+10);
//如果未存在返回true
if(!set.add(tmp)){
ret.add(tmp);
}
}
return new ArrayList<String>(ret);
}
}