class Solution {
private:
unordered_map<char,int> hash;
unordered_map<int,char> revert;
string retrieve(int ans){
string ret = "";
for(int i = 0; i < 10; i++, ans >>= 2){
ret += revert[ans & 3];
}
return ret;
}
public:
Solution(){
hash['A'] = 0;revert[0]='A';
hash['C'] = 1;revert[1]='C';
hash['G'] = 2;revert[2]='G';
hash['T'] = 3;revert[3]='T';
}
vector<string> findRepeatedDnaSequences(string s) {
vector<string> ansSet;
unordered_map<int,int> stringSet;
int ans = 0, size = s.length();
for(int i = 0; i < 10; i++){
ans |= (hash[s[i]]<<(2*i));
}
stringSet[ans]++;
for(int i = 10; i < size; i++){
ans = (ans >> 2) | (hash[s[i]] << 18);
if(stringSet[ans] <= 1){
if(stringSet[ans] == 1){
ansSet.push_back(retrieve(ans));
}
stringSet[ans]++;
}
}
return ansSet;
}
}; Leetcode Repeated DNA Sequences
最新推荐文章于 2016-06-11 17:20:16 发布
本文介绍了一种基于哈希映射的DNA序列重复性检测算法,通过将DNA序列转换为整数并利用位操作来高效查找重复子序列。

6343

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



