Problem: 187. 重复的DNA序列
思路
固定大小是10的一个字串,所以只需要一个指针遍历即可,首先用occ Set集合来存储当前位置i到i+10位置的字符串,存入occ,如果存不进去就说明重复出现就将改字符串存入res中最后用一个List转换把res全部存入ans,for循环中i<length()-9就是因为下面的字符串截取是i位置到i+10位置,所以要减去9
解题方法
描述你的解题方法
复杂度
- 时间复杂度:
添加时间复杂度, 示例: O ( n ) O(n) O(n)
- 空间复杂度:
添加空间复杂度, 示例: O ( n ) O(n) O(n)
Code
class Solution {
public List<String> findRepeatedDnaSequences(String s) {
Set<String> occ = new HashSet();
Set<String> res = new HashSet();
for(int i = 0;i<s.length()-9;i++){
String substr = s.substring(i,i+10);
if(!occ.add(substr)){
res.add(substr);
}
occ.add(substr);
}
List<String> ans = new LinkedList();
ans.addAll(res);
return ans;
}
}