用map就好了,不用一开始还想得两层for循环,至于bit做法,之后看
另外,是<=
public class Solution {
public List<String> findRepeatedDnaSequences(String s) {
List<String> list = new LinkedList<>();
if (s == null || s.length() < 10) {
return list;
}
Map<String, Integer> map = new HashMap<>();
for (int i = 10; i <= s.length(); i++) {
String str = s.substring(i - 10, i);
if (!map.containsKey(str)) {
map.put(str, 1);
} else {
if (map.get(str) == 1) {
list.add(str);
}
map.put(str, 2);
}
}
return list;
}
}
All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACGAATTCCG". When studying DNA, it is sometimes useful to identify repeated sequences within the DNA.
Write a function to find all the 10-letter-long sequences (substrings) that occur more than once in a DNA molecule.
For example,
Given s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT", Return: ["AAAAACCCCC", "CCCCCAAAAA"].