1.简述:
由一系列核苷酸组成的DNA序列缩写为‘A','C','G'和'T'.。
例如,"ACGAATTCCG"是一个 DNA序列 。
在研究 DNA 时,识别 DNA 重复序列非常有用。
给定一个表示 DNA序列 的字符串 s ,返回所有在 DNA 长度为10的序列(子字符串)出现在分子中不止一次。你可以按 任意顺序 返回答案。
示例 1:
输入:s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
输出:["AAAAACCCCC","CCCCCAAAAA"]
示例 2:
输入:s = "AAAAAAAAAAAAA"
输出:["AAAAAAAAAA"]
2.实现代码:
class Solution { static final int L = 10; public List<String> findRepeatedDnaSequences(String s) { List<String> ans = new ArrayList<String>(); Map<String, Integer> cnt = new HashMap<String, Integer>(); int n = s.length(); for (int i = 0; i <= n - L; ++i) { String sub = s.substring(i, i + L); cnt.put(sub, cnt.getOrDefault(sub, 0) + 1); if (cnt.get(sub) == 2) { ans.add(sub); } } return ans; }}