187. 重复的DNA序列
所有 DNA 都由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。
编写一个函数来查找目标子串,目标子串的长度为 10,且在 DNA 字符串 s 中出现次数超过一次。
滑动窗口,如果暴力双层循环,必然会超时,滑动窗口用set来存储
不会超时,可以用位运算来优化,这里不再记录优化的了
class Solution {
public List<String> findRepeatedDnaSequences(String s) {
int n=s.length();
Set<String>res=new HashSet<>();
Set<String>set=new HashSet<>();
for(int i=0;i<=n-10;i++){
String key=s.substring(i,i+10);
if(set.contains(key)){
res.add(key);
}
else
set.add(key);
}
return new ArrayList<>(res);
}
}
这篇博客介绍了如何解决LeetCode中的187题——重复的DNA序列。作者提到传统的双层循环方法会导致超时,因此推荐使用滑动窗口和集合来优化,特别是通过位运算进一步提升效率。虽然没有详细展开位运算的实现,但强调了这种方法可以避免超时问题。
747

被折叠的 条评论
为什么被折叠?



