LeetCode之Repeated DNA Sequences

来源:互联网 发布:传感器java 编辑:程序博客网 时间:2024/05/16 11:01
/*本题最直观的想法是用Hash Table存储起连续的10个字符串,但是这样会超出内存限制。所以用一个数字代替A/C/GT,减少内存消耗。*/class Solution {public:vector<string> findRepeatedDnaSequences(string s) {vector<int> letters(256, 0);letters['A'] = 0;letters['C'] = 1;letters['G'] = 2;letters['T'] = 3;vector<string> res;unordered_map<int, int> hash;int key = 0, er = 0xFFFFF;for(int i = 0; i < s.size(); ++i){key = (key << 2) + letters[s[i]];if(i >= 9){key &= er;if(hash[key] == 1) res.push_back(s.substr(i-9, 10));hash[key] += 1;}}return res;}};

0 0
原创粉丝点击