难度中等303
所有 DNA 都由一系列缩写为 'A'
,'C'
,'G'
和 'T'
的核苷酸组成,例如:"ACGAATTCCG"
。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。
编写一个函数来找出所有目标子串,目标子串的长度为 10,且在 DNA 字符串 s
中出现次数超过一次。
示例 1:
输入:s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT" 输出:["AAAAACCCCC","CCCCCAAAAA"]
示例 2:
输入:s = "AAAAAAAAAAAAA" 输出:["AAAAAAAAAA"]
提示:
0 <= s.length <= 105
s[i]
为'A'
、'C'
、'G'
或'T'
通过次数78,497提交次数150,504
请问您在哪类招聘中遇到此题?
题目分析
一般滑动窗口都要配合一个数据结构来处理窗口中的数据,一般是集合或者哈希表。
AC代码
class Solution {
public:
vector<string> findRepeatedDnaSequences(string s) {
unordered_map<string,int> book;
vector<string> res;
int n = s.size();
for(int l = 0;l +10 <= n;l++){
if(++book[s.substr(l,10)]==2){
res.push_back(s.substr(l,10));
}
}
return res;
}
};