标签:
题意很简单,给一个数n 以及一个字符串str,区间【i,i+n-1】 为一个新的字符串,i 属于【0,strlen(str)】如果新的字符串出现过ans++,例如:acmacm n=3,那么 子串为acm cma mac acm ,只有acm出现过
求ans;
2 2 aaaaaaa 3 acmacm
5 1
思路:http://blog.csdn.net/fool_ran/article/details/42472599
我和他的不一样。。 是先排序,再判断。。
#include<iostream> #include<string.h> #include<string> #include<algorithm> using namespace std; string s[120000]; int main() { int T,n,i,len,k,count,sum; string a; cin>>T; while(T--) { k=0; sum=0; cin>>n; cin>>a; len=a.size(); for(i=0;i<=len-n;i++) { s[k++]=a.substr(i,n); } sort(s,s+k); for(i=0;i<k;i++)//abbccce { count=0; while(i<k-1 && strcmp(s[i].c_str(),s[i+1].c_str())==0) { count++; i++; } sum=sum+count; } cout<<sum<<endl; } return 0; }
标签:
原文地址:http://blog.csdn.net/zuguodexiaoguoabc/article/details/44926287