给定一个字符串S,只由k种小写字母组成。现在给定一个长度L,要求统计一下S有多少种不同的长度为L的子段(S中连续的几个字符)。
输入
单组测试数据。
第一行两个整数L和k。(L>=1,1<=k<=26,kL<=2*107)
第二行一个字符串S。(1<=|S|<=1000000)
输出
输出一个整数表示答案。
输入样例
1 2
ababab
输出样例
2
#include<bits/stdc++.h>
using namespace std;
map<string,int>a;
string str,tmp;
int L,K,sum=0;
int main()
{
ios::sync_with_stdio(false);
cin>>L>>K>>str;
int len=str.length();
for(int i=0;i<=len-L;i++)
{
tmp=str.substr(i,L);//str索引i起长为L的字串
//cout<<tmp<<endl;
if(a[tmp]==0)
{
sum++;a[tmp]++;
}
}
cout<<sum;
return 0;
}