以10个字母的string作为一个查找的最小单位。要注意map[s.substr(i, 10)] == 2 是为了去重,同时以及边界条件。
class Solution {
public:
vector<string> findRepeatedDnaSequences(string s) {
unordered_map<string, int> map;
vector<string> result;
if(s.length() <= 10) return result;
for(int i = 0; i <= s.length() - 10; i++){
if(map.count(s.substr(i, 10))){
map[s.substr(i, 10)] = map[s.substr(i, 10)] + 1;
if(map[s.substr(i, 10)] == 2){
result.push_back(s.substr(i, 10));
}
continue;
}
else
map[s.substr(i, 10)] = 1;
}
return result;
}
};