参考这个写的:
http://blog.csdn.net/akof1314/article/details/5473837
#include "stdio.h"
#include "string.h"
char str[200010];
int b[200010];
int main()
{
int t,n,ans,k,i,j,m;
scanf("%d",&t);
while (t--)
{
scanf("%d",&n);
getchar();
scanf("%s",str);
ans=0;
k=0;
for (i=0;i<n;i++)
{
if (str[i]==str[0])
{
b[k++]=i;ans++;
}
ans%=10007;
}
for (i=1;i<n;i++)
{
m=k; k=0;
for (j=0;j<m;j++)
if (str[i]==str[b[j]+1])
{
ans++;
b[k++]=b[j]+1;
}
ans%=10007;
}
printf("%d\n",ans);
}
return 0;
}