注解
1、题目意思:从一个字符串中取长度为N的子串,能取到几种不同的子串?
2、用一个map<string, int>记录每个取到的子串就可以了。
3、注意输出格式,除了最后一组,其他每组中间的输出有个空行。
代码
#include <iostream>
#include <map>
using namespace std;
int main() {
int T;
cin>>T;
for(int i=0; i<T; i++){
int N, NC;
cin>>N>>NC;
string s;
cin>>s;
map<string, int> mp;
int cnt = 0;
for(int i=0; i<=s.length()-N; i++){
string sub = s.substr(i, N);
if(mp[sub]==0){
cnt++;
mp[sub] = 1;
}
}
cout<<cnt<<endl;
if(i){
cout<<endl;
}
}
return 0;
}