所有 DNA 由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。
编写一个函数来查找 DNA 分子中所有出现超多一次的10个字母长的序列(子串)。
示例:
输入: s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT" 输出: ["AAAAACCCCC", "CCCCCAAAAA"]
思路:
直接用map保存 每10个长度的字符串出现的次数
public List<String> findRepeatedDnaSequences(String s) {
HashMap<String, Integer> map = new HashMap<>();
for (int i = 0; i < s.length() - 9; i++) {
String sequences = s.substring(i, i + 10);
map.put(sequences, map.getOrDefault(sequences, 0) + 1);
}
ArrayList<String> res = new ArrayList<>();
for (Map.Entry<String, Integer> entry : map.entrySet()) {
if (entry.getValue() > 1)
res.add(entry.getKey());
}
return res;
}