All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACGAATTCCG". When studying DNA, it is sometimes useful to identify repeated sequences within the DNA.
Write a function to find all the 10-letter-long sequences (substrings) that occur more than once in a DNA molecule.
For example,
Given s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT", Return: ["AAAAACCCCC", "CCCCCAAAAA"].遍历字符串,把每个长度为10的子串插入<string, int>哈希表,若出现多于一次就加入res里。但为避免重复,判断条件为hash[sub] == 2
class Solution {
public:
vector<string> findRepeatedDnaSequences(string s) {
vector<string> res;
unordered_map<string, int> hash;
int len = s.length();
if (len > 10) {
for (int i = 0; i <= len - 10; ++i) {
string sub = s.substr(i, 10);
hash[sub]++;
if (hash[sub] == 2)
res.push_back(sub);
}
}
return res;
}
};