Leedcode187.重复的DNA序列[online study]
题目描述
引用文本所有 DNA 都由一系列缩写为 ‘A’,‘C’,‘G’ 和 ‘T’ 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。 编写一个函数来找出所有目标子串,目标子串的长度为 10,且在 DNA 字符串 s 中出现次数超过一次。
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/repeated-dna-sequences
代码
static int x = []() {
std::ios::sync_with_stdio(false);
cin.tie(0);
return 0;
}();
vector<string>findRepeatedDnaSequences(string s)
{
if (s.size() < 10)return {};
unordered_set<string>res, mem;
for (int i = 0; i < s.size() - 9; ++i) {
string cur = s.substr(i, 10);
if (mem.count(cur)) res.insert(cur);
else mem.insert(cur);
}
for (auto iter = res.begin(); iter != res.end(); ++iter)
{
cout << *iter << endl;
}
return vector<string>(res.begin(),res.end());
}
int main()
{
string s;
cin >> s;
findRepeatedDnaSequences(s);
}
|