以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;
}
};
本文介绍了一个使用C++实现的算法,用于从输入的字符串中找出所有出现两次或以上的10个字母长度的DNA序列。通过使用unordered_map进行计数,算法能够有效地去除重复并返回结果。
760

被折叠的 条评论
为什么被折叠?



