187. 重复的DNA序列
public static List findRepeatedDnaSequences(String s) {
Set existSet = new HashSet<>();
Set resultList = new HashSet<>();
int length = s.length();
for (int i = 0; i < length - 9; i++) {
String temp = s.substring(i, i + 10);
if (existSet.contains(temp)) {
resultList.add(temp);
} else {
existSet.add(temp);
}
}
return new ArrayList<>(resultList);
}
这题最大的难点在于读懂题目
题目翻译:在原字符串中查找长度为10的子串,要求子串的出现次数大于1次
解题思路:
- 看着有点像窗口滑块遍历字符串,找到重复串
- 使用一个容器 Set/Map 都行存放已遍历出的字串
- 使用 Set 存放重复的穿,使用 Set 是方便不用自己去重
- 返回的时候转换下即可
易错点:subString 的长度为10(0-9,1-10……)