不用KMP
比較第一個字符時,記錄當前位置+1的下標,下次比較第二個位置,從記錄的下標開始比較久可以了。。。
[cpp]
#include"stdio.h"
#include"string.h"
int main()
{
int T;
int n;
int i,j,k,l,t;
int len,ans;
int a[100001];
char s[100001];
while(gets(s))
{
len=strlen(s);
for(i=0;i<len;i++)
a[i]=i;
j=len;
ans=0;
l=0;
t=1;
while(ans!=t)
{
t=ans;
k=0;
for(i=0;i<j&&l<len;i++)
{
if(s[a[i]]==s[l]&&a[i]<len)
{
a[k++]=a[i]+1;
ans++;
}
}
j=k;
l++;
}
printf("%d\n",ans%256);
}
return 0;
}
#include"stdio.h"
#include"string.h"
int main()
{
int T;
int n;
int i,j,k,l,t;
int len,ans;
int a[100001];
char s[100001];
while(gets(s))
{
len=strlen(s);
for(i=0;i<len;i++)
a[i]=i;
j=len;
ans=0;
l=0;
t=1;
while(ans!=t)
{
t=ans;
k=0;
for(i=0;i<j&&l<len;i++)
{
if(s[a[i]]==s[l]&&a[i]<len)
{
a[k++]=a[i]+1;
ans++;
}
}
j=k;
l++;
}
printf("%d\n",ans%256);
}
return 0;
}