题目:
题解:
- 滑动窗口
- 我们需要用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;
}
};