题目链接:点击这里
C++11中有新出4个关联式容器:unordered_map/unordered_multimap、unordered_set/unordered_multiset。这4个关联式容器与map/multimap、set/multiset功能基本类似,最主要就是底层结构不同,使用场景不同。
我们知道map和set实现的是 O(logn) 进行一个映射,其中内置的实现是红黑树。 多数时候已经非常优秀了,但是往往会有一些题用不到有序的序列(我们知道set内部是有序的),反而需要更快的速度。这个时候可以选择自己打hash,但是对于懒癌晚期患者自然想要以哈希桶为底层实现的 unordered_map & unordered_multiset 实现 O(1) 查询。
所以,如果需要得到一个有序序列,使用红黑树系列的关联式容器,如果需要更高的查询效率,使用以哈希表为底层的关联式容器。
AC代码如下:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD = 10000007;
const int INF = 0x3f3f3f3f;
const double PI = acos(-1.0);
const int maxn = 1010;
string s, tmp;
int k;
unordered_map<string,int> mmp; //无序
set<string> st, ans; //有序
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>s;
int len = s.length();
cin>>k;
if(3*k > len)
{
cout<<"0"<<endl;
return 0;
}
for(int i = 0; i <= len-k; i++)
{
tmp = s.substr(i, k);
mmp[tmp]++;
st.insert(tmp);
}
for(auto it : st)
if(mmp[it]>2)
ans.insert(it);
cout<<ans.size()<<endl;
for(auto it : ans)
cout<<it<<endl;
return 0;
}
来源:CSDN
作者:菜是原罪QAQ
链接:https://blog.csdn.net/qq_42815188/article/details/104052991