所有 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;
	}