[滑动窗口]leetcode187:重复的DNA序列(medium)

题目:
在这里插入图片描述
题解:

  • 滑动窗口
  • 我们需要用hashmap存放<10个字符的字符串,该字符串的数量>滑动窗口:下标i从0开始,每次取10个字符作为窗口字符串,判断窗口的字符串是否出现2次然后确定是否添加到res,注意这里只需要判断2次,因为这样可以避免重复添加相同的字符串。
  • i+9<size表示从i起包括i有10个字符,最终取不到10个字符结束循环。

代码如下:

class Solution {
public:
    //题解:滑动窗口
    vector<string> findRepeatedDnaSequences(string s) {
        if(s.size()<=10)return {};
        vector<string> res;
        unordered_map<string,int> count;
        int size=s.size();
        for(int i=0;i+9<size;++i)//固定窗口的边界
        {
            //每次取10个字符作为窗口
            string str=s.substr(i,10);
            count[str]++;
            //当str出现2次的时候就添加了,避免多次添加同一个str
            if(count[str]==2)res.push_back(str);
        }
        return res;
    }
};
发布了484 篇原创文章 · 获赞 149 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/qq_43152052/article/details/103666322