Repeated DNA Sequences

来源:互联网 发布:印尼海关数据 编辑:程序博客网 时间:2024/06/05 03:30

这道题如果直接用map来存储子字符串的话会MLE,需要通过将子字符串转成hash只存储从而节省存储空间。

值得注意的一个技巧是,为了避免重复加入元素,我们只有在map中计数为2时才将其加入结果中,这样结果中就不会出现重复元素了。

论坛里大神给出的解决方案如下:

class Solution {public:    vector<string> findRepeatedDnaSequences(string s) {        unordered_map<size_t,int> MP;        hash<string> hash_fn;        vector<string> ret;        for(int i = 0; i < int(s.size()) - 9; ++i)            if(MP[hash_fn(s.substr(i,10))]++ == 1 )               ret.push_back(s.substr(i,10));      return ret;    }};

这里的hash函数也可以选择自己实现,论坛里给出了一种实现方法,这种方法在本题的限制下,可以保证不同的长度为10的子串可以产生不同的hash值。

https://leetcode.com/discuss/24478/i-did-it-in-10-lines-of-c 


0 0
原创粉丝点击