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
最新推荐文章于 2020-10-17 17:27:32 发布